垃圾收集在Node.JS中的套接字

我正在处理一个Node库,它在完成之后没有明确closures套接字。 相反,它试图通过删除对套接字的引用来清理,并让它们被垃圾收集。

谷歌search失败了我:我不认为这是可能的气相色谱来清理未closures的sockets。 也就是说,我认为从操作系统的angular度来看,任何套接字描述符都会被使用。

此外,假设我作为库消费者可以访问套接字对象,那么closures它们的最佳方式是什么? 我用end()close()destroy()成功地玩过了。 有时他们似乎阻止永久(结束/摧毁),而其他时候似乎callback从来没有(closures)。

这可能是由于你的套接字发送了一个FIN包,并在连接上挂起,同时等待另一端发送FIN2消息。 如果另一边的sockets没有很好的封闭,你的一个将不会收到任何包,从而永远挂断。
实际上, end 发送一个FIN包 ,并没有closures套接字。

一个可能的解决scheme可能是在调用end函数时通过setTimeout 等待一段时间 ,然后通过函数destroy 将其明确 destroy 。 这不会影响你的套接字,如果另一端已经正确closures连接,否则将强制closures,所有的资源应该被释放。