向每个客户端广播的套接字IO及其套接字ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向每个客户端广播的套接字IO及其套接字ID相关的知识,希望对你有一定的参考价值。

我对socket.io感到满意。真的很棒。

我知道从服务器上,我可以:

响应socket客户端:

socket.emit(event, data);

广播到其他客户:

socket.broadcast.emit(event, data);

不加区别地广播给所有客户:

io.emit(event, data);

但是我想做的是将客户端以emit作为参数循环到每个客户端socket.id:>

io.emitEach(socket => socket.emit(event, dataWichDependsOn(socket.id)));

我能做到这一点吗?

我尝试过:

  io.of('/').clients((error, clients) => {
    if (error) throw error;
    return clients.forEach(clientId => {
      io.to(clientId).emit(event, dataWichDependsOn(clientId));
    })
  }

没有成功:(消息似乎没有emit

我对socket.io感到满意。真的很棒我知道从服务器可以执行以下任一操作:响应套接字客户端:socket.emit(event,data);广播到其他客户端:socket ....

答案
Object.keys(io.sockets.sockets).forEach((clientId)=>{
        io.to(clientId).emit(event, dataWichDependsOn(clientId))
    })

以上是关于向每个客户端广播的套接字IO及其套接字ID的主要内容,如果未能解决你的问题,请参考以下文章

使用 socket.io 向特定客户端发送消息,同时套接字 id 快速变化

使用来自另一个客户端的广播发射从节点服务器发送的数据无法被 c++ 套接字 io 客户端读取

通过 socket.id 向客户端发送消息

socket io 广播、房间和确认功能

socket io 广播、房间和确认功能

向特定的套接字 id 发送私人消息