强制客户端与socket.io和nodejs断开连接

有没有办法断开客户端与SocketIO,并从字面上closures连接? 所以如果有人连接到我的服务器,我想closures他们和我的服务器之间的连接,我会怎么做呢?

编辑:这现在是可能的

你现在可以简单地在服务器端调用socket.disconnect()

我原来的答案是:

这是不可能的。

如果您还需要,请对此问题进行投票/评论。

socket.disconnect()只能在客户端使用,而不能在服务器端使用。

Client.emit('disconnect')触发服务器上的断开事件,但不能有效断开客户端。 客户端不知道断开连接。

所以问题依然存在:如何强制客户端从服务器端断开?

为什么你不能让服务器发送消息给客户端,使其调用断开连接function?

在客户端:

 socket.emit('forceDisconnect'); 

在服务器上:

 socket.on('forceDisconnect', function(){ socket.disconnect(); }); 

假设您的套接字的指定套接字,使用:

 socket.disconnect() 

对于那些在谷歌上发现的人 – 现在有一个解决scheme:

Socket.disconnect()踢的客户端(服务器端)。 没有机会让客户保持连接:)

在我的情况下,我想拆除底层的连接,在这种情况下,我不得不调用socket.disconnect(true) ,你可以看到需要从源

client._onDisconnect()应该工作

Socket.io使用EventEmitter模式断开/连接/检查心跳,所以你可以做。 Client.emit('disconnect');

我使用client.emit('disconnect') + client.removeAllListeners()为连接客户端忽略断开连接后的所有事件

我在客户端使用socket.disconnect();

 client.emit('disconnect') didnt work for me 

添加新的套接字连接到一个数组,然后当你想closures所有循环通过它们并断开连接。 (服务器端)

 var socketlist = []; io.sockets.on('connection', function (socket) { socketlist.push(socket); //...other code for connection here.. }); //close remote sockets socketlist.forEach(function(socket) { socket.disconnect(); });