Socket.io - 发送到套接字id的数组

时间:2015-05-20 11:09:07

标签: node.js socket.io

我的每个连接用户的套接字ID都存储在我的数据库中。当任何用户发布评论或状态时,我想使用存储在我的数据库中的套接字ID将其广播到他/她的所有连接。

我可以使用他/她的套接字ID通过使用io.sockets.connected [socket.id]发送消息给个人客户端.emit(' privateMsg','你好!你好吗? ?&#39);

但是我如何向使用我的数据库中的select query生成的socket id数组发出相同的内容。

2 个答案:

答案 0 :(得分:5)

您可以使用rooms的概念。每当套接字连接到达时,加入到房间的连接。断开连接后,从房间中取出插座。

socket.on('connection', function () {
     socket.join('room1');
});  

socket.on('disconnect', function () {
     socket.leave('room1');
});

现在,当您想要将消息发送到房间连接的插座时,您可以将其广播到房间。

socket.broadcast.to('room1').emit('eventName', data);

答案 1 :(得分:1)

您可以为每个连接并向其发出的套接字动态创建一个空间,而不必每次都遍历整个数组。像这样:

socketids.foreach(function(socketid){io.sockets.connected[socketid].join(sendingSocket.id);});

然后,您可以通过执行以下操作从发送套接字发出这些套接字:

sendingSocket.to(sendingSocket.id).emit('publicMessage', 'Hello! How are you?')

作为旁注,我不认为保留数据库中更改的套接字ID是最好的方法,因为它们根本没有持久性。您可能想尝试为数据库找到更好的标识符。