当前位置: 首页 > 面试题库 >

如何在Node.js服务器中设置HTTP Keep-Alive超时

能可人
2023-03-14
问题内容

我实际上正在对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.
});


 类似资料:
  • 我有一个简单的SpringBootConfigServer设置,还有一个客户端服务调用ConfigServer从GIT获取配置文件详细信息。 我的配置服务器工作正常,我能够从GIT获取prop文件。但是当我尝试运行消费者服务器时,它将从ConfigServer服务器获取详细信息,我得到一个错误。。。错误如下。。。 localhost:8888是我的configServer的URL,我可以直接从浏览

  • 我使用PHP-S127.0.0.1:4242命令在本地主机上为php文件启动development server。但我想,我不应该在生产中使用这个东西。目前我正在尝试在VPS上设置我的网站,我不知道如何在端口4242上永远使用ssh启动php服务器。我知道,这可能是很愚蠢的问题,这是我第一次与真正的主持工作 如有任何帮助,我将不胜感激:)

  • 通过设置本地计算机、开发服务器、中间服务器或生产服务器作为测试服务器,测试动态网页或内容。 如果您计划使用服务器端语言(如 PHP)开发动态页,请设置一个测试服务器以便在您进行操作时生成并显示动态内容。 测试服务器可以是本地计算机、开发服务器、中间服务器或生产服务器。 要详细了解测试服务器的用途,请参阅 David Powers 的文章 Setting up a local testing ser

  • 问题内容: 我正在尝试通过SSL连接使用socket.io设置服务器到服务器的链接。这是我的例子: 在没有SSL的情况下运行时,代码工作正常。我怀疑这可能是我的自签名证书未被接受,但是我不知道如何使客户接受它。 请告诉我如何:1.接受自签名SSL证书。或2.以其他方式帮助我完成这项工作。 提前致谢。 问题答案: 经过更多搜索后,将其添加到客户端中使其可以工作: require(’https’)。g

  • 问题内容: 我使用以下行启动了node.js服务器来设置端口: 这意味着,它应该像本地运行时那样读取PORT env变量或默认为8080。它们都不在Heroku上发生,并且服务器始终使用默认端口80。如何更改该端口? 问题答案: 你不能 Heroku设置您应该绑定的PORT变量,并在tcp / 80上进行侦听。

  • 问题内容: 给定一个SSL密钥和证书,如何创建HTTPS服务? 问题答案: 我发现以下示例。 这适用于节点v0.1.94-v0.3.1。在新版本的节点中被删除。 直接从该来源: