繁体   English   中英

在socket.io中发出不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM