在0.9.x版本中,我们可以通过ID获取套接字,如下所示:
io.sockets.socket(socketId)
Run Code Online (Sandbox Code Playgroud)
但在1.0.x我们不能.如何在1.0.x中通过id查找套接字?
我是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.'});
}
});
}
Run Code Online (Sandbox Code Playgroud)
客户端:
kickClient = function(client) { …
Run Code Online (Sandbox Code Playgroud)