如何调试节点套接字:ECONNRESET异常

时间:2014-03-11 01:07:18

标签: node.js sockets

我正在为LogEntries使用节点客户端库,它使用简单的套接字连接与其服务进行交互。

var socket = net.createConnection(options.port, options.host);

在内存连接实例的一段时间后,客户端lib开始发出这些错误:

Error: read ECONNRESET at errnoException (net.js:904:11) at TCP.onread (net.js:558:19)

这是什么意思?是否意味着LogEntries在一段时间后关闭了连接?

此外,连接丢失后是否会自动重新建立连接?

也许我不应该重试使用客户端,每次我想使用它时只是初始化一个新客户端?这将确保永远不会达到超时。

1 个答案:

答案 0 :(得分:4)

我发现了一个解决方案。

根据我的研究,Error: read ECONNRESET可能意味着远程主机(在我的案例中是LogEntries)关闭了连接。

这种情况正在发生,因为我将LogEntries构建为永久存在于内存中的单例,以避免每次需要使用时都启动新的客户端实例。这导致与LogEntries的套接字连接长时间保持打开状态,从而触发套接字错误。

解决方案是重构代码,以便更频繁地创建客户端,避免套接字在较长时间内保持打开状态。