node.js Fehler, wenn ein http.Anfrage ausgestellt wird, auf einem server, der nicht reagiert

Schreibe ich eine node.js server fungiert als API zwischen einem client und einem java-server, der einen Schritt hinter dem node.js API. Die API akzeptiert eingehende HTML-Anfragen vom client, formatiert Sie und sendet Sie aus, um die java-server, der gibt seine Antwort auf die node.js -API, die gibt es an den client zurück. Dies alles funktioniert wunderbar, außer wenn der server down ist. ich brauche zu fangen, die Falle, nur wie kann ich catch a 502 oder 302... hier ist mein code:

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);
            })
        }
    ]
);

wenn ich starte diesen Knoten server und ausgeben einer Anforderung an die node.js server, welche dann versucht wird zu erreichen, die java-server, node.js stürzt ab und ich bekomme folgende Fehler in meiner Konsole:

Veranstaltungen.js:69
werfen arguments[1]; //nicht Behandelte "Fehler" - Ereignis
^
Fehler: Verbindung ECONNREFUSED
bei errnoException (net.js:846:11)
am Objekt.afterConnect [als oncomplete] (net.js:837:19)

Alles, was ich zu tun ist, fangen die "keine Antwort" wenn der java-server ist down, so dass ich es ausführen kann, einer anderen Funktion oder schicken Sie einfach die Tatsache, dass an den client zurück, natürlich ohne Knoten Absturz! Dies kann sehr einfach sein, aber ich habe nichts gefunden, das funktioniert. Ich habe versucht Prozess.auf('uncaughtException'), habe ich versucht (wie im code) Antwort.auf('Fehler').

Ich bin neu zu Knoten und kann nicht sehen, wo das problem ist... Jede Hilfe sehr dankbar!

  • Aufruf der java-server rundet mit 200[OK] Antwort?
  • ja, tut es...
InformationsquelleAutor hkuich | 2013-03-02
Schreibe einen Kommentar