首页 > 解决方案 > Node.js 在服务调用之间共享相同的 HTTP 代理

问题描述

我有一个通过 HTTP 请求连接到外部服务的 node.js 后端。我正在使用node.js HTTP来管理我的请求。我的问题是关于如何正确使用带有该keep-alive选项的 Node.js http 代理。

官方文档解释说我们应该创建一个新的代理并将其传递给请求。这对于我找到的所有示例都是相同的。他们都做这样的事情:

const http = require("http");

const agent = new http.Agent({
    keepAlive: true
});

const options = {
  host: 'myserver.com',
  port: 80,
  path: '/',
  method: 'GET',
  agent: agent,
};
  
const req = http.request(options, (res) => {
  console.log("StatusCode: ", res.statusCode);
});
  1. 由于我的代理已keepAlive打开,我应该只创建一个代理实例,将其保存在某处(静态?),并在我每次向该服务发出请求时重用它。换句话说,我应该只new http.Agent在创建后端时调用一次并继续使用相同的实例,否则我将为每个请求创建一个新代理。这个对吗?除了将其设为全局或静态之外,还有更好的方法来保留代理实例吗?

  2. 我不知道我是否能在这里得到答案,或者直接作为 AWS 更好,但是假设我的后端是 AWS lambda 函数,它们如何在调用之间共享代理,因为 lambda 是短暂的,它甚至keepAlive对于那个用例有意义吗?

谢谢你的澄清。

标签: javascriptnode.jshttpkeep-alive

解决方案


推荐阅读