我在数据库中存储了每个已连接用户的套接字ID。当任何用户发布评论或状态时,我希望使用存储在我的数据库中的套接字ID将其广播给他/她的所有连接。
我可以通过使用io.sockets.connected[socket.id].emit('privateMsg','Hello!你好吗?')向单个客户端发出消息。
但是,我该如何将相同的消息发送到我使用从数据库查询生成的套接字ID数组中的所有套接字ID?
socket.on('connection', function () {
socket.join('room1');
});
socket.on('disconnect', function () {
socket.leave('room1');
});
socket.broadcast.to('room1').emit('eventName', data);
对于任何访问本线程的人。在Socket.io 3.x之后,我们可以将房间名称和套接字ID的数组传递给io对象,如下所示:
socketIds = [xlksdf09sdfsk,sdosdifns90sdf,..........]
io.sockets.to(socketIds).emit('hello','recieving all sockets')
roomNames = [roomA,roomB]
io.to(roomNames).emit('hello','recieves each member of the rooms')
// Event is also not emmitted multiple times on the client side
// evern if single socketId is present in multiple rooms.
socketids.foreach(function(socketid){io.sockets.connected[socketid].join(sendingSocket.id);});
sendingSocket.to(sendingSocket.id).emit('publicMessage', 'Hello! How are you?')
socketsids.forEach(function(socketid){io.to(socketid).emit(...)}
- laggingreflex