2011-05-25 6 views
4

Il ya un poste: How do I set a timeout for client http connections in node.jsComment définir Timeout pour http.createClient dans Node.js?

mais aucune de la réponse ne fonctionnera.

Donc, j'ai le code comme ça:

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(); 

Le plus gros problème est que l'URL que je suis connexion à délai d'attente mai. Par conséquent, je voudrais définir un délai d'attente, comme 15 secondes. Si oui, déclenchez un écouteur.

Cependant, je n'ai pas vu de fonctionnalités de temporisation dans la documentation de http.createClient. S'il vous plaît donnez votre avis. Merci. :)

+0

Voir les réponses à cette question en double: http://stackoverflow.com/questions/6214902/how-to-set-a-timeout-on-a-http-request-in-node (en particulier voir la réponse de douwe) – Sandman4

Répondre

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

Il vous suffit de lancer le compteur vous-même.

+0

Est-ce efficace? – murvinlai

+0

@murvinlal légèrement moins efficace, puis en utilisant les délais d'attente natifs, mais pas sensiblement plus lent, devrait être bien pour l'efficacité. – Raynos

+0

https://github.com/mikeal/request/issues/25 - cette bibliothèque est construite au-dessus de http/client de sorte qu'il semble que ce n'est pas vraiment une fonctionnalité dans les nœuds client http core - d'accord avec Raynos – Josh

Questions connexes