Estoy haciendo algunas pruebas de carga contra un servidor ExpressJS, y noté que la respuesta enviada por el servidor incluye un encabezado "Connection: Keep-Alive". Por lo que yo entiendo, la conexión permanecerá abierta hasta que el servidor o el cliente envíe un encabezado "Conexión: Cerrar".Cómo configurar el tiempo de espera HTTP Keep-Alive en un servidor nodejs
En algunas implementaciones, el encabezado "Connection: Keep-Alive" aparece con un encabezado "Keep-Alive" que establece el tiempo de espera de conexión y el número máximo de solicitudes consecutivas que se envían a través de esta conexión.
Por ejemplo: "Keep-Alive: timeout = 15, max = 100"
¿Hay alguna manera (y es relevante) para establecer estos parámetros en un servidor Express?
Si no es así, ¿sabe cómo ExpressJS maneja esto?
Editar: Después de algunas investigaciones, descubrí que el tiempo de espera predeterminado se establece en el node standard http library:
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Con el fin de cambiar esta situación:
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);
De todos modos todavía se ve un poco extraño para mí que el servidor no envíe ninguna pista al cliente sobre su tiempo de espera.
Edit2: Gracias a josh3736 por su comentario.
setSocketKeepAlive no está relacionado con HTTP keep-alive. Es una opción de nivel TCP que le permite detectar que el otro extremo de la conexión ha desaparecido.