向没有响应的服务器发出http.request时发生node.js错误
我正在编写一个node.js服务器,它充当客户端和java服务器之间的API,它是node.js API的一个下游步骤。 API接受来自客户端的传入HTML请求,重新格式化它们,然后将它们发送给java服务器,java服务器返回其对node.js API的答案,并将其返回给客户端。 除了服务器关闭时,这一切都很精彩。 我需要捕捉那个事件,就像我可以捕获502或302 ...这是我的代码:
async.waterfall(
[
function(callback){
var options = { host: 'localhost', port: '8080',
path: '/javaServerWork/' + req.query.foo + '?toDo=' + req.query.bar,
method: 'GET',
headers: { accept: 'application/json' }
};
http.request(options, function(response){
response.on('error', function(exception) { Console.log("error here"); }
if(response.statusCode == '200'){ callback(null, response); }
else if (response.statusCode == '502') { res.send('502'); }
else { res.send('not 200 and not 502'); }
}).end();
},
function(response){
var javaResponse = '';
response.on('error', function(exception){ Console.log("error here");});
response.on('data', function (chunk){ javaResponse += chunk; });
response.on('end', function(){
res.send(javaResponse);
})
}
]
);
当我启动这个节点服务器并向node.js服务器发出请求,然后尝试到达java服务器时,node.js崩溃,并在控制台中出现以下错误:
events.js:69个参数[1]; //未处理'error'事件^错误:在Object.afterConnect [ascomplete](net.js:837:19)处的errnoException(net.js:846:11)处连接ECONNREFUSED
我需要做的就是在java服务器关闭时捕获“无响应”,这样我就可以执行另一个函数,或者简单地将该事实返回给客户端,当然,不会造成节点崩溃! 这可能很简单,但我没有发现任何可行的方法。 我曾尝试process.on('uncaughtException'),我试过(如代码中)response.on('错误')。
我是新来的节点,无法看到问题的地方...任何帮助非常感谢!
你试过了吗
http.request(options, function(response){
response.on('error', function(exception) { Console.log("error here"); }
if(response.statusCode == '200'){ callback(null, response); }
else if (response.statusCode == '502') { res.send('502'); }
else { res.send('not 200 and not 502'); }
}).on('error', function(e) {
console.log("handle error here");
}).end();
听起来像错误是在HTTP.request返回的请求对象上引发的,而不是在响应对象上
(http://nodejs.org/api/http.html#http_http_request_options_callback)
链接地址: http://www.djcxy.com/p/46457.html上一篇: node.js error when an http.request is issued to a server that is not responding