[英]emit in socket.io not working
我创建了一个相当简单的socket.io项目来证明'sockets.emit'似乎有些问题。
我在这里创建了一个git: https : //github.com/dirkk0/minimalsocket
有问题的行是https://github.com/dirkk0/minimalsocket/blob/master/server.js#l17-21
// this should work but doesn't
io.sockets.emit(JSON.stringify(msg))
这不起作用。
因此,作为一个workaroud,我遍历客户端发送消息,这很好:
io.sockets.clients().forEach(function (socket) {
socket.send(JSON.stringify(msg));
});
我在Ubuntu 12.04上测试了节点v0.10.24,npm 1.3.21,socket.io 0.9.16,express 3.4.7和MacOSX节点0.10.12。 还有MacOSX上的Safari,Firefox,Chrome和Windows7上的Chrome。 结果是一致的。
我忽略了一些明显的东西吗
谢谢,德克
编辑:是的,我忽略了我必须给通道一个名字(由于某种原因不需要.send),如: io.sockets.emit('message', JSON.stringify(msg))
socket .emit没有被打破。
您忘记了emit()
的事件名称,该名称应为io.sockets.emit('message', yourObject)
或将其更改为io.sockets.send(yourObject)
;
emit()
和send()
语法:
// @param yourEventName is a string
// @param yourObject is an serializable object (that mean you can stringify it)
socket.emit(yourEventName, yourObject);
// @param yourObject is a serializable object
socket.send(yourObject) // equipvalent to socket.emit('message', yourObject) (???)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.