我正在写一个node.js服务器,它充当客户端和一个位于该节点下游一步的java服务器之间的API。 js API。 API接受来自客户端的传入HTML请求,重新格式化它们,然后将它们发送给java服务器,java服务器返回其对node.js API的答案,并将其返回给客户端。除了服务器关闭时,这一切都很精彩。我需要赶上这一事件,就像我能赶上一个502或302 ......这里是我的代码:node.js错误,当一个http.request被发送到没有响应的服务器
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 throw arguments[1]; // Unhandled 'error' event ^ Error: connect ECONNREFUSED at errnoException (net.js:846:11) at Object.afterConnect [as oncomplete] (net.js:837:19)
所有我需要做的是抓住“没有响应”当Java服务器宕机,从而使我可以执行另一个函数,或者简单地将这个事实返回给客户端,当然,没有节点崩溃!这可能很简单,但我没有发现任何可行的方法。我曾尝试process.on('uncaughtException'),我试过(如代码中)response.on('错误')。
我是新来的节点,不能看到问题的地方...任何帮助非常感谢!
调用java的服务器以200 [OK]响应完成? – D3V 2013-03-02 17:38:07
是的,它的确如此... – hkuich 2013-03-04 20:34:46