我正在寫一個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