我有一段代码设置,但是套接字被发送给错误的人,我也不知道为什么。当我更新某人的状态时,其他用户的状态也会更新。
基本代码
io.on('connection', function(socket) {
socket.on('login', function(token) {
/* Database call for user */
socket.to(user.id);
}
});
var getSocket(userId){
var socketFromRoom = io.sockets.in(userId);
return socketFromRoom;
}
我最近从仅将用户存储在对象中切换到了上面,这样,当用户登录i时,我可以轻松地将数据发送到多个选项卡。每当我使用getSocket(1).emit({...}
时,数据都会发送给错误的人,这非常令人担忧。
答案 0 :(得分:0)
检查Socket.IO cheatsheet和rooms and namespaces的文档。
使用加入/离开来处理房间:
/
我认为您应该更改:
socket.join(roomId);
socket.leave(roomId);
收件人:
socket.to(user.id);
从文档中
socket.join(user.id);
要发送到单个套接字,请使用:
// sending to all clients in 'game' room, including sender
io.in('game').emit('big-announcement', 'the game will start soon');