Nodejs如何使用room将消息广播到命名空间

时间:2013-12-07 12:53:20

标签: node.js socket.io

我可以使用以下代码

将消息发送到特定的命名空间

io.of(namespace).in(room).emit('functionname', data);

但它发送到所有连接的客户端,包括发件人,我想要的是我想发送不包括发件人的邮件,我尝试了以下方法,但由于语法不正确,一切都失败了

io.broadcast.of(namespace).in(room).emit('functionname', data);

io.of(namespace).broadcast.in(room).emit('functionname', data);

io.of(namespace).in(room).broadcast.emit('functionname', data);

io.of(namespace).in(room).broadcast('functionname', data);

如何将邮件发送给除发件人之外的每个客户。

4 个答案:

答案 0 :(得分:3)

我相信你想要的是:

 // send to all clients except sender
 socket.broadcast.emit('event', "this is a test");

 // send to all clients in 'room' room except sender
 socket.broadcast.to('room').emit('event', 'whadup');

  // sending to all clients in 'room' room, include sender
 io.sockets.in('room').emit('event', 'woodup');

如果您还想指定命名空间,可以添加“of。(namespace)”。

答案 1 :(得分:1)

这样做是为了向发件人以外的所有人发送邮件:

socket.broadcast.emit('event', "this is a test");

答案 2 :(得分:0)

我遇到了这个问题。 io.of()让我很困惑。

当您使用'连接' as io.of(),

你的套接字已经有了命名空间。所以你只需添加特定的空间。

io.of(namespace).in(room).emit(' functionname',data); - > sokcet.broadcast.emit('事件',数据);

答案 3 :(得分:0)

我也遇到了麻烦。 关键是要用 socket而非io

这将不起作用:

io.of(namespace).broadcast.to(room).emit('event', data)

但是,这将起作用:

socket.to(room).emit('event', data)

尽管有一个缺点,那就是只有当您要发送的套接字在您要发送到的命名空间中时,这才起作用。如果您想发送到其他名称空间,我认为这种方法不起作用