Wie definiere ich ein timeout für client-http-verbindungen node.js
Schreibe ich eine node.js Anwendung, um das Gespräch mit einem server. Es baut eine http-Verbindung mit dem folgenden code:
var client = http.createClient(u.port, u.hostname, u.secure);
client.on("error", function(exception) {
logger.error("error from client");
});
var request = client.request(method, u.path, headers);
Sehe ich keine option in der node.js Dokumentation für die Einstellung der timeout auf die Verbindung, und es scheint zu 20 Sekunden standardmäßig. Das problem das ich habe ist, dass ich noch-Nutzer in China auf, was zu einem langsamen oder unzuverlässigen Netzwerk, die manchmal schlagen die timeout-die Verbindung zu unserem Rechenzentrum in den USA. Ich würde gerne erhöhen Sie den timeout auf 1 minute, um zu sehen, ob das behebt Sie für Sie.
Gibt es eine Möglichkeit, das zu tun, node.js?
- Die richtigen Antworten sind alle in dieser doppelten Frage: stackoverflow.com/questions/6214902/... (vor allem siehe douwe Antwort)
- Mögliche Duplikate von Wie man ein timeout auf einen http.request() im Knoten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Ich denke, man kann so etwas wie:
Anfrage.Verbindungs-gibt die net.Stream-Objekt, das der Verbindung zugeordnet.
und net.Stream hat eine setTimeout-Methode.
Es ist keine Fähigkeit, Knoten zu erhöhen connect timeout. Da in der Regel verbinden-timeout (d.h. Verbindung einrichten timeout) ist OS-weite Einstellung für alle Anwendungen (z.B. 21 Sekunden, Windows, von 20 bis 120 Sekunden in Linux). Siehe auch Timouts in Wunsch-Paket.
Im Gegensatz dazu, Knoten ermöglicht verringerte timeout und bricht die Verbindung auch im Falle, wenn die Verbindung noch nicht hergestellt.
Den weiteren timeouts (im Fall der Verbindung hergestellt wurde) kann gesteuert werden gemäß der Dokumentation (siehe
- Anfrage.setTimeout
,socket.setTimeout
).Müssen Sie warten, bis das client-socket-Verbindung zuerst hergestellt werden, bevor die Einstellung der timeout-Zeit. Um dies zu tun, fügen Sie eine callback-für die "socket" - Veranstaltung:
Lesen Sie diese Antwort.