In realtà sto eseguendo alcuni test di carico su un server ExpressJS e ho notato che la risposta inviata dal server include un'intestazione "Connessione: Keep-Alive". Per quanto ho capito, la connessione rimarrà aperta finché il server o il client non invieranno un'intestazione "Connessione: Chiudi".Come impostare il timeout Keep-Alive HTTP in un server nodejs
In alcune implementazioni, l'intestazione "Connessione: Keep-Alive" viene visualizzata con un'intestazione "Keep-Alive" che imposta il timeout della connessione e il numero massimo di richieste consecutive invia tramite questa connessione.
Ad esempio: "Keep-Alive: timeout = 15, max = 100"
C'è un modo (ed è rilevante) per impostare questi parametri su un server Express?
In caso contrario, sai come ExpressJS gestisce questo?
Edit: Dopo alcune indagini, ho scoperto che il timeout predefinito è impostato nella node standard http library:
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Per cambiare questo:
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);
In ogni caso sembra ancora un po 'strano per me che il server non invii alcun suggerimento al client riguardo al suo timeout.
Edit2: Grazie a josh3736 per il suo commento.
setSocketKeepAlive non è correlato a HTTP keep-alive. È un'opzione di livello TCP che consente di rilevare che l'altra estremità della connessione è scomparsa.