我是套接字的新手,我遇到了以下问题,我使用this库将我的应用程序连接到我的nodejs服务器。 我想知道为什么我以下列方式调用socket.emit()并不起作用:
override func viewDidLoad() {
var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!)
socket.emit("ping","some data");
socket.connect();
}
它既不能正常工作,也不能刷插入socket.econnect和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");
}
我想我在这里遗漏了一些东西,如果有人可以向我解释这件事会很棒
答案 0 :(得分:2)
在调用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()
}