简体   繁体   English

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

[英]Swift socket.io .emit() doesn't fire

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. 我是套接字的新手,但遇到以下问题,我使用库将我的应用程序连接到我的nodejs服务器。 I'd like to know why if i call socket.emit() in the following way doesn't work: 我想知道为什么我不能通过以下方式调用socket.emit():

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

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

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: 滑动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");
}

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()
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM