在Swift上,我用
socket.on("test") {data, ack in
print(data)
}
为了订阅我的Sails.js API上的房间(套接字)。
当我从服务器广播消息时,用
sails.sockets.broadcast('test', { text : 'ok' })
永远不会调用socket.on
处理程序。但是,如果我在从swift连接我的socket.io客户端时将“log”设置为TRUE,则在Socket-IO日志中消息到达。
怎么了?
最终,我发现了我的错误:
我做的整个过程是正确的:(加入房间的请求由服务器完成,使用sails.sockets.join
)
错误的是使用socket.on
和ROOM NAME
参数。
对于有同样问题的人,我会更好地解释一下:
socket.emitWithAck("post", [
"room": "testroom",
"url": "/api/v1.0/roomsubscribing"
]).timingOut(after: 0) {data in
print("Server responded with \(data)")
}
roomSubscribing: function(req, res) {
if (!req.isSocket) {
return res.badRequest();
}
sails.sockets.join(req, req.params('room'), function(err) {
if (err) {
return res.serverError(err);
}
});
}
sails.sockets.broadcast('testroom', { message: 'testmessage' }
现在快速的一面,你必须使用:
socket.on("message") { data, ack in
print(data)
}
为了让消息处理程序工作。我认为你应该使用房间名称,而应该在广播数据时使用服务器中使用的KEY / VALUE条目的KEY(在本例中为“message”)。