NodeJs Erreur: connexion ETIMEDOUT
- Je exécuter node myserver.js
qui contient le code ci-dessous, et après plus de 40 50sec je reçois le message d'erreur(ci-dessous le code). Pourquoi j'ai une erreur quand rien ne se passe?
var options = {
host: 'google.com',
port: '80',
path: '/',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': 'post_data.length'
}
};
var subscribeRequest = require('http').request(options, function(res) {
console.log('send request');
}).on('error', function(err){console.log(err.stack)});
après plus de 40 50sec, j'obtiens cette erreur:
Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
Cela se produit également lorsque le serveur de refuser votre demande. Par exemple si vous faites beaucoup de requête à un serveur, ils pourraient vous bloquer après un certain temps et sera la cause de cette erreur.
OriginalL'auteur gumenimeda | 2014-05-09
Vous devez vous connecter pour publier un commentaire.
J'en vois au moins deux choses de mal ici:
Vous n'êtes pas se terminant à votre demande. Lorsque vous utilisez
http.request()
vous devez appeler.end()
sur la demande de l'objet renvoyé lorsque vous avez terminé l'envoi des données, le serveur sait qu'il y a plus de données à venir.http.get()
automatiquement les appels.end()
pour vous, car il n'y a pas de corps avec des requêtes GET.'Content-Length': 'post_data.length'
devrait être'Content-Length': post_data.length
En supposant que vous avez
post_data
, vous feriezsubscribeRequest.end(post_data);
. Ce qui fera parvenir votre formulaire de données et le signal de la fin de votre demande. Ensuite, vous devez obtenir une sorte de réponse du serveur.Je fais un calendrier de l'événement à l'aide de express js et cachet du service smtp, j'obtiens la même erreur, même si je l'ai déclaré res.fin() et l'erreur ce que je m arriver est {[Erreur:connexion ETIMEDOUT 50.31.225.155:2525] code:'ECONNECTION', errno:'ETIMEDOUT', syscall: "se connecter", adresse:'50.31.225.155', port:2525, la commande:'CONN' }
OriginalL'auteur mscdex
Vous devez appeler
subscribeRequest.end()
après la déclaration de votre demande! Si vous ne le faites pas, votre demande ne sera jamais envoyéOriginalL'auteur Adriano Valente