我想使用socket.io在一个房间中发送消息,但是在某些情况下,我想跳过房间中的某些用户,所以我该怎么做。
当前,我正在使用以下代码在组
中发送消息io.on('connection', function (socket) {
sockets[socket.handshake.query.id]=socket;
console.log("user_connect",socket.handshake.query );
if(socket.handshake.query.user_type=="DRIVER"){
socket.join('orderPool');
}
socket.join('USER_'+socket.handshake.query.id);
socket.on('disconnect', function () {
delete sockets[socket.handshake.query.id];
console.log('user disconnected', socket.handshake.query.id);
});
});
io.sockets.in("ROOMNAME").emit("POOL_EVENT_RECIEVED", data);
答案 0 :(得分:0)
一种解决方案是仅与要发送消息的选定用户同时保留另一个房间"<room name>-selected users"
。不要将要跳过的用户添加到该房间。
因此,当您向该会议室发送消息时,未添加到此会议室的用户将不会收到这些消息。
答案 1 :(得分:0)
有时io已断开连接,然后尝试再次重新连接,但我认为这不是您的问题。
注意,您可以向特定命名空间中存在的房间发送信息。如果您使用默认的命名空间'/'
,请尝试:
io.of('/').in("ROOMNAME").emit("POOL_EVENT_RECIEVED", data);
您还可以阅读socket.io发出备忘单:https://socket.io/docs/emit-cheatsheet/