Node.js 仅向房间中的一组客户端发出套接字事件

Node.js 仅向房间中的一组客户端发出套接字事件,node.js,socket.io,Node.js,Socket.io,我正在用节点和套接字io构建一个实时应用程序 我的问题是: 在我的客户方面,我有 socket.emit('adduser', username); socket.on('adduser', function(username) { io.sockets.in(socket.room).socket.emit('user-added', somedata); } 在我的服务器端,我有 socket.emit('adduser', username); socket.on('adduser

我正在用节点和套接字io构建一个实时应用程序

我的问题是:

在我的客户方面,我有

socket.emit('adduser', username);
socket.on('adduser', function(username) {
 io.sockets.in(socket.room).socket.emit('user-added', somedata);
}
在我的服务器端,我有

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.insocket.room.socket.emit时,事件将发送到特定房间中所有连接的客户端

例如,我只希望客户端1和客户端3侦听此“用户添加”事件


如何实现这一点?

如果您不想向同一房间中的所有用户发送,则可以使用以下命令根据其id向特定客户端发送

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

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

socket.broadcast.to('room1').emit('new user');
如果您希望向包括发件人在内的所有用户发送,则可以使用以下代码:

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

请注意,在io.sockets.in.

是之后不需要套接字调用,但是socketsocketid将仅向特定套接字发出。假设房间里有3个客户机,我想向客户机1和客户机3发射,看起来你不想向发射的套接字发射,就像客户机2是发射套接字,客户机1和3是同一房间的其他两个连接套接字,如果是这样,那么你可以使用“socket.broadcast.tosocket.room.emit'user-added',{data:yourData};”