5 Stimmen

Wie kann man Timeout für http.createClient in Node.js festlegen?

Es gibt eine Stelle: Wie setze ich ein Timeout für Client-Http-Verbindungen in node.js

aber keine der Antworten wird funktionieren.

Ich habe den Code also so:

    var remote_client = http.createClient(myPost, myHost);
    var path = '/getData?';
    var param = {       };

    var request = remote_client.request("POST", path,);

    // error case
    remote_client.addListener('error', function(connectionException){
        console.log("Nucleus Error: " + connectionException);
        next(connectionException);
    });

    request.addListener('response', function (response) {
        response.setEncoding('utf-8'); 
        var body = '';

        response.addListener('data', function (chunk) {

        // get the result!              
        });
    });

    request.end();

Das größte Problem ist, dass die URL, mit der ich verbunden bin, eine Zeitüberschreitung verursachen kann. Daher würde ich gerne eine Zeitüberschreitung festlegen, z. B. 15 Sek. Wenn ja, einen Listener auslösen.

Allerdings habe ich in der Dokumentation für http.createClient keine Zeitüberschreitungsfunktionen gesehen. Bitte um Rat. Thanks. :)

6voto

Raynos Punkte 162170
var foo = setTimeout(function() {
    request.emit("timeout-foo");
}, 15000);

// listen to timeout
request.on("timeout-foo", function() { });

request.addListener('response', function (response) {
    // bla
    // clear counter
    clearTimeout(foo);
});

Überprüfen Sie den Zähler einfach selbst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X