http nodejs 上的 ECONNRESET 错误

ECONNRESET error on http nodejs

我正在尝试通过 nodejs 上的 http 库向 rest API 发出一个简单的 http 请求。 调用两分钟后,请求触发了这个错误:

{ [Error: read ECONNRESET] 
code: 'ECONNRESET', 
errno: 'ECONNRESET', 
syscall: 'read' }

服务器正在运行,因为当我使用 PHP 或使用 Chrome 的扩展 Advanced Rest Client 进行此调用时,它可以运行。我无权访问服务器日志或服务器配置。

我几乎可以肯定我的呼叫正在到达服务器,因为地址错误,我收到错误的地址错误,而使用不同的端口,我收到超时错误。

var http = require('http');

var post = {
    "id": msgId,
    "otherdata": { "user": user } 
};
var content = JSON.stringify(post);

// prepare the header
var postheaders = {
    'Content-Type' : 'application/x-www-form-urlencoded',
    'Content-Length' : Buffer.byteLength(content, 'utf8'),
    'Accept-Encoding': 'gzip,deflate,sdch',
    'Accept-Language': 'en-US,en;q=0.8'
};

// the post options
var optionspost = {
    host : Constants.API_HOST,
    port : Constants.API_PORT,
    path : Constants.API_PATH,
    method : 'POST',
    headers : postheaders
};

// I found a solution that recommended adding the following code, but it didn't work either:
var keepAliveAgent = new http.Agent({ keepAlive: true });
optionspost.agent = keepAliveAgent;

// do the POST call
var request = http.request(optionspost, function(res) {
    res.on('data', function(d) {
        // never reached here
        console.info(data);
    });
    res.on("end", function(){
        // never reached here also
        console.info(data);
    });
});
request.write(content);
request.end();
request.on("error", function(e){
    // ECONNRESET error is triggered here...
    console.info(e);
});

我在想这可能是节点的 http 库的一些不正确使用,所以我在考虑使用另一个库来进行 rest API 调用。

有什么建议吗?

谢谢! =)

如果有人发现这种情况: 我的问题是地址端口。由于我无法访问外部 API,我看不到错误日志,但问题是他们移动了端口,另一个端口仍然打开,但无法正常工作。 所以,服务器可以访问,但没有响应 - 这就是这个错误:没有响应,超时后,抛出这个错误。

感谢您的帮助!