Javascript 使用socket.io时内存泄漏
我发现,当手动断开套接字io服务器端的连接时,它们并没有被完全破坏。我发现这很有用。当我在寻找一些阻止GC清理套接字的变量链接时,我在这里问了一个问题 如果这里有人遇到同样的问题,这将是很大的帮助 不起作用的代码:Javascript 使用socket.io时内存泄漏,javascript,node.js,memory-leaks,socket.io,Javascript,Node.js,Memory Leaks,Socket.io,我发现,当手动断开套接字io服务器端的连接时,它们并没有被完全破坏。我发现这很有用。当我在寻找一些阻止GC清理套接字的变量链接时,我在这里问了一个问题 如果这里有人遇到同样的问题,这将是很大的帮助 不起作用的代码: socket.on('disconnect', function(){ socket.removeAllListeners(); }); ///................... socket.disconnect(); 但是,使用受限库字段的解决方案: delet
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];
}
您只能
删除对象的属性,而不能删除对象本身的属性。sockets.sockets[socketID]仍然被删除。