我的网站有一个连接多个用户的即时消息。从我的客户端我希望断开特定用户。这是我正在尝试的代码:
// 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);
});
使用警报,我已经验证我正在使用我想断开的用户名来调用服务器端功能。但是会发生什么是我断开连接,而不是指定的用户。我在这里做错了什么?
答案 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?