tutorial socket principiantes para node libro example desde cero node.js http-headers express keep-alive

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.