クライアントと、node.js API の一歩下流にある Java サーバーとの間の API として機能する node.js サーバーを作成しています。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]; // 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('error') を試しました。
私はノードが初めてで、問題がどこにあるのかわかりません...どんな助けも大歓迎です!