我正在使用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'
事件
我如何实现这一目标?
答案 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()
来电。