Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用socket.io时内存泄漏_Javascript_Node.js_Memory Leaks_Socket.io - Fatal编程技术网

Javascript 使用socket.io时内存泄漏

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

我发现,当手动断开套接字io服务器端的连接时,它们并没有被完全破坏。我发现这很有用。当我在寻找一些阻止GC清理套接字的变量链接时,我在这里问了一个问题

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

不起作用的代码:

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]仍然被删除。