我正在为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在一段时间后关闭了连接?
此外,连接丢失后是否会自动重新建立连接?
也许我不应该重试使用客户端,每次我想使用它时只是初始化一个新客户端?这将确保永远不会达到超时。
答案 0 :(得分:4)
我发现了一个解决方案。
根据我的研究,Error: read ECONNRESET
可能意味着远程主机(在我的案例中是LogEntries)关闭了连接。
这种情况正在发生,因为我将LogEntries构建为永久存在于内存中的单例,以避免每次需要使用时都启动新的客户端实例。这导致与LogEntries的套接字连接长时间保持打开状态,从而触发套接字错误。
解决方案是重构代码,以便更频繁地创建客户端,避免套接字在较长时间内保持打开状态。