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,我看不到错误日志,但问题是他们移动了端口,另一个端口仍然打开,但无法正常工作。
所以,服务器可以访问,但没有响应 - 这就是这个错误:没有响应,超时后,抛出这个错误。
感谢您的帮助!
我正在尝试通过 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,我看不到错误日志,但问题是他们移动了端口,另一个端口仍然打开,但无法正常工作。 所以,服务器可以访问,但没有响应 - 这就是这个错误:没有响应,超时后,抛出这个错误。
感谢您的帮助!