Socket.io 向房间里的每个人发出,除了发件人[重复]

Posted

技术标签:

【中文标题】Socket.io 向房间里的每个人发出,除了发件人[重复]【英文标题】:Socket.io emit to everyone in the room except the sender [duplicate] 【发布时间】:2015-03-20 12:22:55 【问题描述】:

所以我有一个聊天室,我想向除我之外的所有人发送消息(b/c 我将通过 JS 在表单提交时更新聊天窗口和我的消息),我尝试这样:

io.sockets.in(socket.room)
          .broadcast
          .emit('new message', 
            'username' : socket.nickname,
            'message' : data,
            'color' : socket.color
          );

它不起作用。你们知道我该怎么做吗?

【问题讨论】:

应该是socket.broadcast.to(socket.room).emit(...); 这个答案中的好列表:***.com/a/10099325/4879 【参考方案1】:

如果你只是删除广播,你应该发送给所有人,甚至是发送者。广播命名空间使得消息被发送给发送者除了的每个人。只需检查docs。比如

io.sockets.in(socket.room)
      .emit('new message', 
        'username' : socket.nickname,
        'message' : data,
        'color' : socket.color
      );

【讨论】:

是的,但这也会向我自己发出,我不想看到这条消息……只有房间里的其他人才能看到我的消息

以上是关于Socket.io 向房间里的每个人发出,除了发件人[重复]的主要内容,如果未能解决你的问题,请参考以下文章

套接字 io 不向房间发送消息

向 Socket.io 中的其他房间发送消息

如何在socket.io中发射到房间? [复制]

NodeJs Socket.io 房间

Socket.io 不断向每个客户端发出请求的数据

NodeJs Socket.io Rooms