头图

目的是避免 SNAT port exhaustion 问题:

const https = require('https');

https.globalAgent = new https.Agent({
  keepAlive: true,
  maxSockets: 100,
  maxFreeSockets: 10,
  timeout: 60_000,
});

这段代码是使用 Node.js 中的 https 模块创建了一个全局的代理对象,并对其进行了一些配置。让我们逐行解释这段代码的含义:

  1. const https = require('https');

    • 引入 Node.js 的 https 模块,该模块提供了一个用于处理 HTTPS 请求的对象。
  2. https.globalAgent = new https.Agent({
      keepAlive: true,
      maxSockets: 100,
      maxFreeSockets: 10,
      timeout: 60_000,
    });
    • 创建一个新的 https.Agent 实例,并将其赋给 https.globalAgent 属性。https.Agent 是一个用于管理 HTTP 或 HTTPS 代理的对象。
    • 参数对象包含了一些配置选项,下面是这些选项的含义:

      • keepAlive: true:启用 HTTP Keep-Alive。当启用时,客户端和服务器之间的连接将保持打开状态,以便在多个请求之间重用。
      • maxSockets: 100:允许的最大套接字数。这指定了在同一时间可以与服务器建立的最大连接数。
      • maxFreeSockets: 10:最大空闲套接字数。指定在连接池中允许保持空闲状态的最大连接数。
      • timeout: 60_000:连接的超时时间,以毫秒为单位。如果连接在指定的时间内没有建立,则会被视为超时。

    现在,让我们通过一些例子来说明这段代码的作用:

    例子 1: 发送 HTTPS 请求

    const https = require('https');

// 使用全局代理发送 HTTPS 请求
https.get('https://www.example.com', (response) => {
// 处理响应
// ...
});


上述代码中,由于设置了全局代理,通过 `https.get` 发送的请求将使用上述配置的代理参数。

**例子 2: 使用自定义代理发送请求**

const https = require('https');

// 创建一个自定义代理
const customAgent = new https.Agent({
keepAlive: false,
maxSockets: 5,
timeout: 30_000,
});

// 发送 HTTPS 请求时使用自定义代理
const options = {
hostname: 'www.example.com',
port: 443,
path: '/',
method: 'GET',
agent: customAgent, // 指定代理
};

const req = https.request(options, (res) => {
// 处理响应
// ...
});

req.end();


在这个例子中,我们创建了一个自定义的 `https.Agent` 实例,并将其用于发起 HTTPS 请求。这使得我们可以在不同的请求之间使用不同的代理配置。

注销
1k 声望1.6k 粉丝

invalid