内存泄漏使用socket.io

我发现,套接字io服务器端手动断开它们时,没有完全销毁。 我发现这个话题在github上很有用。 当我在寻找一些阻止GC清理套接字的variables链接时,我在这里提出一个问题。

如果这里有人遇到同样的问题,这将有很大的帮助。

该代码不起作用:

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

解决方法,但是,使用受限制的库字段:

 delete io.sockets[url]; io.j = []; 

实际上,这是按预期工作的,当你断开套接字的连接时,你只是简单地声明你现在不希望从套接字接收更多的数据,实际上是销毁套接字,你基本上做了delete socket操作。 在断开连接事件上使用它,即:

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

你也可以在外部函数的io.sockets.sockets对象上做到这一点:

 function deleteSocket(socketID){ delete io.sockets.sockets[socketID]; }