如何在nodejs服务器中设置HTTP Keep-Alive超时

实际上,我正在对ExpressJS服务器进行一些负载testing,我发现服务器发送的响应包含一个“Connection:Keep-Alive”头文件。 据我所知,连接将保持打开,直到服务器或客户端发送“连接:closures”标题。

在某些实现中,“Connection:Keep-Alive”头部带有一个“Keep-Alive”头文件,用于设置连接超时以及通过此连接发送的连续请求的最大数量。

例如:“Keep-Alive:timeout = 15,max = 100”

在快速服务器上设置这些参数有没有办法(而且是相关的)?

如果没有,你知道ExpressJS如何处理这个?

编辑:经过一番调查后,我发现在节点标准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); 

无论如何,它仍然看起来有点奇怪,服务器不发送任何提示的客户端有关其超时。

编辑2:感谢josh3736的评论。

setSocketKeepAlive与HTTP保持活动不相关。 这是一个TCP级别的选项,允许您检测到连接的另一端已经消失。

对于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. }) 
Interesting Posts