我正在对一个ExpressJS服务器进行负载测试,并注意到服务器发送的响应包括一个"Connection: Keep-Alive"头。据我所知,连接将保持打开状态,直到服务器或客户端发送一个"Connection: Close"头。
在一些实现中,“Connection: Keep-Alive”头会与“Keep-Alive”头一起出现,设置连接超时和通过该连接发送的最大连续请求数。
例如:"Keep-Alive: timeout=15, max=100"
在Express服务器上是否有设置这些参数的方法(以及是否相关)?
如果没有,您知道ExpressJS如何处理吗?
编辑: 经过一些调查,我发现默认的超时时间是在node标准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级别的选项,允许您检测连接的另一端是否消失。