向没有响应的服务器发出http.request时发生node.js错误

我正在编写一个node.js服务器,它充当客户端和一个位于node.js API下游一步的java服务器之间的API。 API接受来自客户端的传入HTML请求,重新格式化它们,并将它们发送给java服务器,java服务器返回对node.js API的答案,并将其返回给客户端。 除了服务器closures以外,这一切都很好用。 我需要赶上事件,就像我可以赶上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); }) } ] ); 

当我启动这个节点服务器,并发出一个请求,然后尝试到达java服务器的nod​​e.js服务器,node.js崩溃,我得到我的控制台中的以下错误:

events.js:69个参数[1]; 错误:在Object.afterConnect [ascomplete](net.js:837:19)处的errnoException(net.js:846:11)处连接ECONNREFUSED。

我只需要在java服务器closures的时候捕捉“no response”,这样我就可以执行另一个函数,或者简单地将这个事实返回给客户端,当然,不会造成节点崩溃! 这可能很简单,但我没有发现任何可行的方法。 我曾尝试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