在Node.js中禁用HTTP Keep-Alive

时间:2018-05-17 17:17:48

标签: node.js

我想在 Node.js 服务器中完全禁用Keep-Alive,但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标头: browser-request

我做错了吗?

信息:我正在运行节点 v10.1.0 ,但它也无法在 v8.11.2 上运行。

1 个答案:

答案 0 :(得分:0)

您可以通过设置Connection: close标头来禁用HTTP Keep-Alive。这是必要的,因为Keep-Alive is enabled by default in 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请求。