Jak ustawić limit czasu HTTP Keep-Alive na serwerze nodejs

Przeprowadzam testy obciążenia serwera ExpressJS i zauważyłem, że odpowiedź wysłana przez serwer zawiera nagłówek "Connection: Keep-Alive". O ile to Rozumiem, połączenie pozostanie otwarte, dopóki serwer lub klient nie wyśle nagłówka "Connection: Close".

W niektórych implementacjach nagłówek" Connection: Keep-Alive "zawiera nagłówek" Keep-Alive " ustawiający limit czasu połączenia i maksymalną liczbę kolejnych żądań wysyłanych przez ten połączenie.

Na przykład: "Keep-Alive: timeout=15, max=100"

Czy istnieje sposób (i czy jest to istotne), aby ustawić te parametry na serwerze Express ?

Jeśli nie, to wiesz, jak ExpressJS sobie z tym radzi ?

Edit: Po kilku śledztwach dowiedziałem się, że domyślny timeout jest ustawiony w standardowej bibliotece http węzła :

socket.setTimeout(2 * 60 * 1000); // 2 minute timeout

Aby to zmienić:

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);

W każdym razie wygląda to trochę dziwnie dla mnie, że serwer nie wysyła żadnych wskazówek do klienta dotyczących jego limitu czasu.

Edit2: Dzięki josh3736 za komentarz.

SetSocketKeepAlive nie jest związane z http keep-alive. Jest to opcja na poziomie TCP, która pozwala wykryć, że drugi koniec połączenia zniknął.

Author: Miguel L., 2012-09-29

1 answers

Dla 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.
})
 28
Author: dgo.a,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-20 23:28:47