仅将套接字事件发送到房间中的一组客户端

时间:2014-01-24 12:11:54

标签: node.js socket.io

我正在使用node和socket io构建实时应用程序。

我的问题是:

在我的客户端,我有

socket.emit('adduser', username);

在我的服务器端,我有

socket.on('adduser', function(username) {
 io.sockets.in(socket.room).socket.emit('user-added', somedata);
}

现在又来到客户端,我有一个用户添加的监听器

socket.on('user-added', function(somedata) {
// get shit done!
}

现在假设我连接了3个客户端,并且所有客户端共享相同的脚本。 根据我对socket io的理解,当我说io.sockets.in(socket.room).socket.emit时,事件将发送到特定房间中的所有连接客户端。

比如说,我只希望客户端1和客户端3收听此'user-added'事件

我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

如果您不想向同一房间内的所有用户发光,那么您可以根据他的ID使用以下内容向特定客户发光。

io.sockets.socket(socketid).emit('user-added', {data: yourData});

答案 1 :(得分:0)

如果要向发件人以外的所有用户发光,可以使用以下代码:

socket.broadcast.to('room1').emit('new user');

如果您希望向包括发件人在内的所有用户发出以下代码,请执行以下操作:

io.sockets.in('room1').emit('new user');

请注意,socket之后您不需要io.sockets.in()来电。