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ął.
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.
})
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