我创建了一个相当琐碎的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))
这不起作用。
因此,作为工作专家,我遍历客户端以发送消息,效果很好:
io.sockets.clients().forEach(function (socket) {
socket.send(JSON.stringify(msg));
});
我在带有节点v0.10.24,npm 1.3.21,socket.io 0.9.16,express 3.4.7的Ubuntu 12.04和带有节点0.10.12的MacOSX上进行了测试。还有Safari,Firefox,MacOSX上的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) (???)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句