node.js - principiantes - socket io tutorial
Cómo establecer el tiempo de espera HTTP Keep-Alive en un servidor de nodejs (1)
Para Express 3:
var express = require(''express'');
var app = express();
var server = app.listen(5001);
server.listen(3000);
server.on(''connection'', function(socket) {
console.log("A new connection was made by a client.");
socket.setTimeout(30 * 1000);
// 30 second timeout. Change this as you see fit.
})
De hecho, estoy haciendo algunas pruebas de carga contra un servidor ExpressJS, y noté que la respuesta enviada por el servidor incluye un encabezado de "Conexión: 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".
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 enviadas 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, ¿sabes cómo ExpressJS maneja esto?
Editar: después de algunas investigaciones, descubrí que el tiempo de espera predeterminado se establece en la biblioteca http estándar del nodo :
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Para cambiar esto:
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 me parece un poco extraño 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.