Swift socket.io .emit()不会触发

我是套接字的新手,我遇到了以下问题,我使用这个库将我的应用程序连接到我的nodejs服务器。 我想知道为什么如果我以下面的方式调用socket.emit()不起作用:

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

它既不工作也不起作用socket.emit和socket.connect函数,但是如果我通过点击一个按钮来触发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"); } 

我想我在这里遗漏了一些东西,如果有人可以向我解释这一点会很棒

套接字在调用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() }