为什么socket.disconnect断开了错误的用户?

时间:2015-04-23 17:02:49

标签: socket.io

我的网站有一个连接多个用户的即时消息。从我的客户端我希望断开特定用户。这是我正在尝试的代码:

  // client side
function deleteUser(delCallsign)
     {
          delCallsign = delCallsign.toUpperCase();
            socket.emit('deleteuser', delCallsign); // send it to the server for delete
     }

// server side
socket.on('deleteuser', function(callsign)
   {
        socket.disconnect(usernames[callsign]);
      io.sockets.emit('updateusers', usernames);
    });

使用警报,我已经验证我正在使用我想断开的用户名来调用服务器端功能。但是会发生什么是我断开连接,而不是指定的用户。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

在用户连接上,你应该记录它的socket.id,你将调用它来删除

io.sockets.on('connection',function(socket){
      // Asign socket.id to variable 
      // socket.id;
});

socket.on('deleteuser', function(callsign) {
      io.sockets.connected[usernames[callsign].id].disconnect();
      io.sockets.emit('updateusers', usernames);  
});

这大概就是这个想法。

基于这些帖子:

SocketIO: disconnect client by socket id?

Get the client id of the message sender in socket.io?

- 更多相关信息 -

有点旧,但适用相同的原则

how do I store socket resources from specific users with socket.io?