Nodjs如何将消息广播到带有房间的命名空间



我可以用以下代码将消息发送到特定的命名空间房间

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);

如何将邮件发送给除发件人之外的所有客户端。

我相信你想要的是:

 // 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)"。

这样做可以向除发送者之外的所有人发送消息:

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

我遇到了这个问题。io。of()把我弄糊涂了。

当您使用"connection"作为io.of()时,

您的套接字已具有命名空间。所以你只需要添加特定的房间。

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

我也遇到了这个问题。关键是使用socket而非io

这将不起作用:

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

然而,这将起作用:

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

不过,一个缺点是,只有当你要发送的套接字位于你想要发送的命名空间中时,这种方法才会起作用。如果你想发送到另一个命名空间,我认为这种方法不适用

最新更新