Dan*_*Dan 7 javascript memory-leaks node.js socket.io
我发现在手动断开连接时套接字io服务器端没有完全销毁套接字.我在github上发现这个主题很有用.虽然我正在寻找一些阻止GC清理套接字的变量链接,但我在这里问一个问题.
如果这里有人遇到同样的问题,这将有很大帮助.
代码不起作用:
socket.on('disconnect', function(){
socket.removeAllListeners();
});
///...................
socket.disconnect();
Run Code Online (Sandbox Code Playgroud)
但是,解决方法是使用受限制的库字段:
delete io.sockets[url];
io.j = [];
Run Code Online (Sandbox Code Playgroud)
实际上,这是按预期工作的,当您断开套接字时,您只需声明您现在不希望从该套接字接收更多数据,要真正销毁套接字,您基本上会执行该操作delete socket。在断开连接事件上使用它,即:
socket.on('disconnect', function(){
delete socket;
})
Run Code Online (Sandbox Code Playgroud)
您还可以在外部函数的 io.sockets.sockets 对象上执行此操作:
function deleteSocket(socketID){
delete io.sockets.sockets[socketID];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3083 次 |
| 最近记录: |