问题描述
我是套接字的新手,但是我遇到以下问题,我使用这个库将我的应用程序连接到我的nodejs服务器.我想知道为什么我不能通过以下方式调用socket.emit():
I'm new to sockets and i'm stuck with the following problem, i use this library to connect my app to my nodejs server.I'd like to know why if i call socket.emit() in the following way doesn't work:
override func viewDidLoad() {
var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!)
socket.emit("ping","some data");
socket.connect();
}
滑动socket.emit和socket.connect函数都不起作用,但是如果我通过单击按钮触发socket.emit函数,则它起作用:
It doesn't work neither swiping socket.emit and socket.connect functions but if I trigger the socket.emit function by clicking a button it works:
override func viewDidLoad() {
var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "myhosturl")!)
socket.connect();
}
@IBAction func sendMessage(sender: AnyObject) {
socket.emit("ping","some data");
}
我想我在这里想念一些东西,如果有人可以向我解释一下,那就太好了
I think i'm missing something here, it would be great is someone could explain this to me
推荐答案
套接字在发出调用之前需要建立连接.您可能应该等到建立连接后再发射.试试这个:
Sockets require a connection before emit is called. You should probably wait until there is a connection before u emit. Try this:
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()
}
这篇关于Swift socket.io .emit()不会触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!