我实际上正在对ExpressJS服务器进行一些负载测试,并且我注意到服务器发送的响应包括一个“ Connection:Keep- Alive”标头。据我了解,该连接将保持打开状态,直到服务器或客户端发送“ Connection:Close”标头为止。
在某些实现中,“ Connection:Keep-Alive”标头带有“ Keep-Alive”标头,用于设置连接超时和通过该连接发送的连续请求的最大数量。
例如:“保持活动:超时= 15,最大= 100”
有没有办法在Express服务器上设置这些参数(是否相关)?
如果没有,您知道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);
无论如何,服务器仍然没有向客户端发送有关其超时的任何提示对我来说仍然有些奇怪。
Edit2: 感谢josh3736的评论。
setSocketKeepAlive与HTTP保持活动无关。它是TCP级别的选项,可让您检测连接的另一端是否消失。
对于Express 3:
var express = require('express'); var app = express(); var server = app.listen(5001); 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. });