首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTIFY: Error: socket hang ]代码:多个请求时的'ECONNRESET‘

RESTIFY: Error: socket hang ]代码:多个请求时的'ECONNRESET‘
EN

Stack Overflow用户
提问于 2014-01-17 21:42:16
回答 2查看 4.3K关注 0票数 0

我正在实现一个节点应用程序,它带来了来自BigCommerce的订单详细信息。使用Restify JsonClient异步调用多个BigCommerce接口。

它在某些调用中工作得很好,但之后我给出了错误:[Error: socket hang up] code: 'ECONNRESET', sslError: undefined, body: {}

我试过通过设置agent=false来关闭socket pooling ie,但仍然给出同样的错误。

下面是调用BigCommerce API的代码。

代码语言:javascript
复制
makeRequest = function (url, params, headers, orderDetails, cb) {
                var options = {
              headers: headers
              };

                var client = restify.createJsonClient({
                    url: url
                });

                client.get(options, function(err, req, res, obj) {
                    if(err){
                        console.log(err);
                        cb(err,obj);
                    } else if(obj != null) {
                        var result = obj;
                        if(orderDetails == null) {
                            cb(null,result);
                        } else {
                            cb(null, result , orderDetails);
                        }
                    }
                });
            };

我得到以下错误:

代码语言:javascript
复制
{ [Error: socket hang up] code: 'ECONNRESET', sslError: unde
fined, body: {} } Error: socket hang up
    at SecurePair.error (tls.js:993:23)
    at EncryptedStream.CryptoStream._done (tls.js:689:22)
    at CleartextStream.read [as _read] (tls.js:490:24)
    at CleartextStream.Readable.read (_stream_readable.js:320:10)
    at EncryptedStream.onCryptoStreamFinish (tls.js:301:47)
    at EncryptedStream.g (events.js:175:14)
    at EncryptedStream.EventEmitter.emit (events.js:117:20)
    at finishMaybe (_stream_writable.js:352:12)
    at endWritable (_stream_writable.js:359:3)
    at EncryptedStream.Writable.end (_stream_writable.js:337:5)
    at EncryptedStream.CryptoStream.end (tls.js:628:31)
    at Socket.onend (_stream_readable.js:483:10) 

为什么我会得到这样的错误?我该怎么处理呢?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-04-21 22:58:49

我只是想确保您在正确的区域设置了代理设置。

包括

“代理”:false

在你的选择中。(它没有在你粘贴的代码中的选项中设置)

在这里评论中的每个gfpacheco:https://github.com/restify/node-restify/issues/485

默认情况下,NodeJS使用代理来保持

连接打开,因此您可以重复使用它。问题是,如果服务器关闭了,或者由于某种原因关闭了您的连接,您会得到ECONNRESET错误。

要在每次关闭连接时,只需在创建客户端时设置agent: false

我已经尝试过这个解决方案,它对我很有效。

除此之外,

"secureOptions":"constants.SSL_OP_NO_TLSv1_2“

这里发布的解决方案听起来像是一条正确的道路,因为你得到了一个sslError

票数 1
EN

Stack Overflow用户

发布于 2014-03-24 21:07:43

也许你遇到了这个问题https://github.com/joyent/node/issues/5360

TL;DR:您可以尝试使用最新的节点版本,并将secureOptions: constants.SSL_OP_NO_TLSv1_2添加到您的选项中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21187486

复制
相关文章

相似问题

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