Как установить тайм-аут HTTP Keep-Alive на сервере nodejs
Я на самом деле выполняю некоторое нагрузочное тестирование на сервере ExpressJS, и я заметил, что ответ, отправленный сервером, включает в себя «Connection: Keep-Alive» заголовок. Насколько я понимаю, соединение будет оставаться открытым, пока сервер или клиент не отправит сообщение «Соединение: Закрыть». заголовок.
В некоторых реализациях & quot; Соединение: Keep-Alive & quot; В заголовке появляется «Keep-Alive». заголовок, задающий время ожидания соединения и максимальное количество последовательных запросов, отправляемых через это соединение.
Например: & quot; Keep-Alive: timeout = 15, max = 100 & quot;
Есть ли способ (и это уместно) установить эти параметры на сервере Express?
Если нет, знаете ли вы, как ExpressJS справляется с этим?
Edit: После некоторых исследований я обнаружил, что тайм-аут по умолчанию установлен вузел стандартная библиотека http:
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Чтобы изменить это:
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);
В любом случае мне все еще кажется немного странным, что сервер не отправляет клиенту никаких подсказок относительно его тайм-аута.
Edit2: Спасибо josh3736 за его комментарий.
setSocketKeepAlive не имеет отношения к HTTP keep-alive. Это опция уровня TCP, которая позволяет определить, что другой конец соединения исчез.