首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用socket.io的内存泄漏

使用socket.io的内存泄漏
EN

Stack Overflow用户
提问于 2012-03-07 15:57:46
回答 1查看 4.4K关注 0票数 7

我发现在socket io服务器端,当手动断开套接字时,套接字并没有完全销毁。我发现this topic on github很有用。当我在寻找一些阻止GC清理套接字的变量链接时,我在这里问了一个问题。

如果这里的任何人遇到了同样的问题,这将是非常有帮助的。

不起作用的代码:

代码语言:javascript
复制
socket.on('disconnect', function(){
    socket.removeAllListeners();
});

///...................

socket.disconnect();

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

代码语言:javascript
复制
delete io.sockets[url];
io.j = [];
EN

回答 1

Stack Overflow用户

发布于 2012-05-10 17:11:15

实际上,这是按预期工作的,当您断开一个套接字时,您只需声明您现在不希望从该套接字接收更多数据,以实际销毁该套接字,您基本上执行了delete socket操作。在disconnect事件上使用它,即:

代码语言:javascript
复制
socket.on('disconnect', function(){
    delete socket; 
})

您还可以对外部函数的io.sockets.sockets对象执行此操作:

代码语言:javascript
复制
function deleteSocket(socketID){
    delete io.sockets.sockets[socketID];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9597692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档