在斯威夫特,我用
socket.on("test") {data, ack in
print(data)
}
以便在我的Sails.js API上订阅一个房间(套接字)。
当我从服务器广播一条消息时,
sails.sockets.broadcast('test', { text : 'ok' })
从来不调用socket.on
处理程序。但是,如果我在连接socket.io客户端时将"log“设置为TRUE,在Socket-IO日志中,消息就会到达。
怎么了?
发布于 2017-10-02 09:48:38
最后,我发现了我的错误:
我所做的整个过程都是正确的:(加入房间的请求由服务器使用sails.sockets.join
完成)
使用带有socket.on
参数的ROOM NAME
是错误的。
对于其他有同样问题的人,我会解释得更好:
现在在斯威夫特这边,你必须使用:
socket.on("message") { data, ack in
print(data)
}
才能让消息处理程序正常工作。我认为您应该使用房间名称,而应该使用您在服务器中广播数据时使用的键/值条目的键(在本例中是"message")。
发布于 2017-10-02 00:42:56
我在套接字方面的经验不多,但万一没人接.
我认为您遗漏了三步套接字过程中的第一步:
socket.on
来处理来自该房间的特定事件。.on
的订阅者/客户端都会做出反应。我可能错了,但从你的描述听起来你好像错过了第一步。您的客户端必须使用io.socket
发送一条消息,类似于这里,然后服务器必须使用套接字请求让它们加入房间,类似于示例这里中的内容。
(在没有socket.on
触发的情况下,日志数据的存在似乎证实了事件是在房间中广播的,但该客户端没有订阅)
祝好运!
https://stackoverflow.com/questions/46514939
复制相似问题