【发布时间】:2014-08-19 05:59:48
【问题描述】:
我是 nodejs 的新手,正在尝试像很多人一样编写一个聊天室。
聊天由多个房间和客户组成。诸如 /nick /join /help /ls users /ls rooms 之类的命令可以正常工作,尽管我无法让 /kick 命令正常工作。
我只是不确定你是如何通过 id 断开客户端的,到目前为止/kick client 能够显示相应的客户端 socket.id,尽管我被困在通过 socket.id 启动的代码。
到目前为止的代码:
断开发送/kick的客户端:socket.disconnect();
从 arg /kick client 删除客户端:delete io.sockets.sockets[client];
删除客户端并不会断开它们的连接,它们仍然可以接收数据,只是不发送。
已解决
CuriousGuy 的 0.9 完美运行,对于那些感兴趣的人来说 - 这是我正在使用的代码。
服务器端:
handleClientKick(socket);
...
function handleClientKick(socket) {
socket.on('kick', function(client) {
if (typeof io.sockets.sockets[client] != 'undefined') {
socket.emit('message', {text: nickNames[socket.id] + ' kicked: ' + nickNames[client]});
io.sockets.sockets[client].disconnect();
} else {
socket.emit('message', {text: 'User: ' + name + ' does not exist.'});
}
});
}
客户端:
kickClient = function(client) {
this.socket.emit('kick', client);
};
【问题讨论】:
标签: node.js socket.io disconnect