Ich mache tatsächlich einige Belastungstests gegen einen ExpressJS-Server, und ich bemerkte, dass die Antwort vom Server eine "Connection: Keep-Alive" -Header enthält. Soweit ich es verstehe, bleibt die Verbindung solange offen, bis der Server oder der Client eine "Verbindung: Schließen" -Header sendet.Wie setze ich das HTTP Keep-Alive-Timeout in einem Nodejs-Server
In einigen Implementierungen wird der Header "Connection: Keep-Alive" mit einem "Keep-Alive" -Header versehen, der das Verbindungszeitlimit und die maximale Anzahl aufeinanderfolgender Anforderungen über diese Verbindung festlegt.
Zum Beispiel: "Keep-Alive: timeout = 15, max = 100"
Gibt es eine Möglichkeit (und ist es relevant), diese Parameter auf einem Express-Server zu setzen?
Wenn nicht, wissen Sie, wie ExpressJS dies behandelt?
Edit: Nach einigen Untersuchungen, fand ich heraus, dass das Standard-Timeout in den node standard http library gesetzt:
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Um dies zu ändern:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("Hello World");
}).on('connection', function(socket) {
socket.setTimeout(10000);
}).listen(3000);
Wie auch immer noch sieht es aus ein bisschen komisch für mich, dass der Server keinen Hinweis an den Client bezüglich seiner Zeitüberschreitung sendet.
Edit2: Danke an josh3736 für seinen Kommentar.
setSocketKeepAlive ist nicht verwandt mit HTTP keep-alive. Es ist eine TCP-Level-Option, mit der Sie erkennen können, dass das andere Ende der Verbindung verschwunden ist.