Jak ustawić limit czasu HTTP Keep-Alive na serwerze nodejs
W rzeczywistości przeprowadzam testy obciążenia na serwerze ExpressJS i zauważyłem, że odpowiedź wysłana przez serwer zawiera nagłówek „Connection: Keep-Alive”. Z tego, co rozumiem, połączenie pozostanie otwarte, dopóki serwer lub klient nie prześle nagłówka „Connection: Close”.
W niektórych implementacjach nagłówek „Connection: Keep-Alive” pojawia się z nagłówkiem „Keep-Alive”, określającym limit czasu połączenia i maksymalną liczbę kolejnych żądań wysyłanych przez to połączenie.
Na przykład: „Keep-Alive: timeout = 15, max = 100”
Czy istnieje sposób (i czy jest to istotne) na ustawienie tych parametrów na serwerze Express?
Jeśli nie, czy wiesz, jak ExpressJS obsługuje to?
Edytować: Po kilku badaniach dowiedziałem się, że domyślny limit czasu jest ustawiony wstandardowa biblioteka http:
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 nadal wydaje mi się trochę dziwne, że serwer nie wysyła klientowi żadnych wskazówek dotyczących jego limitu czasu.
Edit2: Dzięki josh3736 za jego komentarz.
setSocketKeepAlive nie jest powiązany z utrzymaniem aktywności HTTP. Jest to opcja na poziomie TCP, która pozwala wykryć, że drugi koniec połączenia zniknął.