我想在 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标头:
我做错了吗?
信息:我正在运行节点 v10.1.0 ,但它也无法在 v8.11.2 上运行。
答案 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请求。