我发现在socket io服务器端,当手动断开套接字时,套接字并没有完全销毁。我发现this topic on github很有用。当我在寻找一些阻止GC清理套接字的变量链接时,我在这里问了一个问题。
如果这里的任何人遇到了同样的问题,这将是非常有帮助的。
不起作用的代码:
socket.on('disconnect', function(){
socket.removeAllListeners();
});
///...................
socket.disconnect();但是,解决方法是使用受限制的库字段:
delete io.sockets[url];
io.j = [];发布于 2012-05-10 17:11:15
实际上,这是按预期工作的,当您断开一个套接字时,您只需声明您现在不希望从该套接字接收更多数据,以实际销毁该套接字,您基本上执行了delete socket操作。在disconnect事件上使用它,即:
socket.on('disconnect', function(){
delete socket;
})您还可以对外部函数的io.sockets.sockets对象执行此操作:
function deleteSocket(socketID){
delete io.sockets.sockets[socketID];
}https://stackoverflow.com/questions/9597692
复制相似问题