Я хочу полностью отключить Keep-Alive на сервере Node.js, но setKeepAlive(false) не действует. Это пример кода:
var http = require('http')
var server = http.createServer(function(req, res) {
res.end('Hello Node.js Server!')
})
server.on('connection', function(socket) {
socket.setKeepAlive(false)
})
server.listen(8080)
Как видите, после открытия http://127.0.0.1:8080 присутствует заголовок keep-alive:

Я делаю что-то неправильно?
Информация: я использую узел v10.1.0, но он также не работает на v8.11.2.





Вы можете отключить HTTP Keep-Alive, установив заголовок Connection: close. Это необходимо, потому что Keep-Alive включен по умолчанию в HTTP 1.1..
var server = http.createServer(function(req, res) {
res.setHeader('Connection', 'close')
res.end('Hello Node.js Server!')
})
socket.setKeepAlive() предназначен для TCP Keep-Alive вместо HTTP Keep-Alive, а это две разные вещи. Это очень сбивает с толку, но TCP Keep-Alive предназначен для поддержания активности бездействующего соединения, а HTTP Keep-Alive предназначен для повторного использования TCP-соединения для нескольких HTTP-запросов.