在 node.js 中编写 ECONNRESET 错误和套接字连接检查

Posted

技术标签:

【中文标题】在 node.js 中编写 ECONNRESET 错误和套接字连接检查【英文标题】:write ECONNRESET error and socket connection checking in node.js 【发布时间】:2012-09-06 01:58:06 【问题描述】:

我在运行 node.js 脚本时偶尔会收到此错误。

events.js:66
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: write ECONNRESET
    at errnoException (net.js:768:11)
    at Object.afterWrite (net.js:592:19)

是什么导致了这个错误?我在某个地方读到这是由于尝试将数据写入关闭的套接字而引起的。 对吗?

如果是这种情况,如何检查套接字连接是否处于活动状态? 我发现了这个 SO 问题here,但没有人在那里回答。

第三,是一个简单的在 socket.write 语句周围的 try catch,足以处理这个错误吗?或者它会发出我必须处理的错误事件?

【问题讨论】:

检查是完全没有意义的。即使您检查时它很好,但当您尝试写入时它仍然可能失败。 哦.. 最后一个问题呢?只是一个 try..catch 处理它吗? 我相信是这样,但是我对node.js不是很熟悉,所以我没有回答。 当我的服务器尝试写入已关闭的套接字连接时,我遇到了同样的错误。并且 try/catch 无法抓住异常。 (我正在使用节点 v0.10.8) 我只是使用了一个 process.on 来处理未处理的异常。 process.on('uncaughtException', function(e) console.log(e.stack); ); 【参考方案1】:

我们已经通过 http-proxy 看到了它,并在此处报告了该问题:https://github.com/nodejitsu/node-http-proxy/issues/331

如果没有处理“错误”(并且只有“错误”)事件,nodejs 会抛出。

【讨论】:

以上是关于在 node.js 中编写 ECONNRESET 错误和套接字连接检查的主要内容,如果未能解决你的问题,请参考以下文章

Node.js mysql 读取 ECONNRESET

关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施

node.js ssh2 => 如何关闭连接并处理 ECONNRESET 错误

MySQL 在 node.js 服务器上的空闲时间后给出“读取 ECONNRESET”错误

Postman 卡在“GET”请求中,在使用 PostgreSQL 作为后端的 Node JS 中给出“无法获得响应错误:读取 ECONNRESET”的错误

node.js远程窗口ssh上的连接错误ECONNRESET