强制客户端与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(); });