2016-04-06 16 views
0

私はソケットに新しく、私はthisライブラリを使用してnodejsサーバーにアプリケーションを接続します。 私は、私は次のようにsocket.emit()を呼び出した場合は動作しない理由を知りたいのですが:Swift socket.io .emit()が起動しない

override func viewDidLoad() { 
    var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!) 

    socket.emit("ping","some data"); 
    socket.connect(); 
} 

それはどちらスワイプsocket.emitとsocket.connect機能を動作しますが、もししないIそれが動作ボタンをクリックしてsocket.emit機能をトリガ:

override func viewDidLoad() { 
var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!) 
socket.connect(); 
} 

@IBAction func sendMessage(sender: AnyObject) { 
socket.emit("ping","some data"); 
} 

私はここで何かが欠けていると思う、それは素晴らしいことだと、誰かが

+1

は、このライブラリや実装について多くを知らないが、それはあなたの第二の例ではなくでは正常に動作し、なぜそれがある、動作しないでしょうその接続する前に発光するようにソケットを尋ねるように思えますあなたの最初に。 – pbush25

答えて

1

ソケットはEMITの前に接続する必要が私にこれを説明することができていますが呼び出されます。おそらく、あなたが出る前に接続があるまで待つべきです。これを試してみてください:

override func viewDidLoad() { 
    let socket = SocketIOClient(socketURL: NSURL(string: "myhosturl")!) 
    socket.on("connect") { _, _ in 
     print("socket connected") 
     socket.emit("ping", "data") 
    } 
    socket.on("ping") { _, _ in 
     print("ping received") 
    } 
    socket.connect() 
} 
+0

これは正常に動作します – Ezechiele

関連する問題