gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 12:51:13 27 4
gpt4 key购买 nike

我是套接字新手,遇到以下问题,我使用 this将我的应用程序连接到我的 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()
}

关于ios - Swift socket.io .emit() 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com