Ich führe tatsächlich einige Lasttests gegen einen ExpressJS-Server durch und habe festgestellt, dass die Antwort, die vom Server gesendet wird, einen "Verbindung: Keep-Alive" Header enthält. Soweit ich das verstehe, bleibt die Verbindung geöffnet, bis der Server oder der Client einen "Verbindung: Close" Header sendet.
In einigen Implementierungen erscheint der "Verbindung: Keep-Alive" Header mit einer Einstellung für die Verbindungs-Timeout und die maximale Anzahl aufeinanderfolgender Anfragen, die über diese Verbindung gesendet werden.
Zum Beispiel: "Keep-Alive: timeout=15, max=100"
Gibt es eine Möglichkeit (und ist es relevant), diese Parameter auf einem Express-Server einzustellen?
Falls nicht, wissen Sie, wie ExpressJS damit umgeht?
Bearbeiten: Nach einigen Untersuchungen habe ich herausgefunden, dass das Standard-Timeout in der Node-Standard-HTTP-Bibliothek festgelegt ist:
socket.setTimeout(2 * 60 * 1000); // 2 Minuten Timeout
Um dies zu ändern:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("Hallo Welt");
}).on('connection', function(socket) {
socket.setTimeout(10000);
}).listen(3000);
Trotzdem erscheint es mir ein wenig seltsam, dass der Server dem Client keinen Hinweis auf sein Timeout sendet.
Bearbeiten2: Danke an josh3736 für seinen Kommentar.
setSocketKeepAlive hat nichts mit dem HTTP Keep-Alive zu tun. Es handelt sich um eine TCP-Ebene-Option, die es Ihnen ermöglicht festzustellen, dass das andere Ende der Verbindung verschwunden ist.