@arcjet/transport

中文文档
1.15.0发布于 2026/10/29Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 33.4万

Arcjet协议的运输机制

中文使用文档
文档目录13 节
  1. 这是什么?
  2. 我什么时候用这个?
  3. 安装
  4. 节点.js 版本支持
  5. 使用
  6. API 密码
  7. createTransport(baseUrl[, options])
  8. createHttp2Transport(baseUrl[, http2SessionOptions])
  9. 代理支持
  10. ProxyEnvironment
  11. TransportLogger
  12. TransportOptions
  13. 许可证
Arcjet Logo

@arcjet/transport

npm badge

运输机制 弧喷 协议.

这是什么?

这个包裹提供了一种与我们的协议交谈的方式.

我什么时候用这个?

这是内部的Arcjet包件,不为公众使用而设计. 看我们的 开始吧 指南 如何使用Arcjet 在您的 应用.

安装

这套方案只是无害环境管理. 在 Node.js 用 npm 安装 :

npm install @arcjet/transport

节点.js 版本支持

此软件包需要 >=22.21.0 <23 || >=24.5.0。代理支持依赖于 节点.js HTTP 代理代理的内置代理支持,该代理支持仅可用于 节点.js >=22.21.0 在24号线上, >=24.5.0. Node.js 20是寿终正寝 和节点23不支持。 任何人追踪一个活动 LTS 释放 不受影响.

因为每个Arcjet SDK都依赖于这个软件包,所以适用同样的要求 穿过Arcjet SDK.

使用

import { createTransport } from "@arcjet/transport";

const transport = createTransport("https://decide.arcjet.com");
// This can now be passed to `createClient` from `@arcjet/protocol`.

API 密码

此软件包导出标识符 createTransport。 。 。 . 没有默认导出 .

无条件的子路径 @arcjet/transport/http2 出口 createHttp2Transport 给那些需要 无论软件包的运行时间导出条件如何,节点 HTTP/2 连接路径 (使用时间: @arcjet/guard 在邦顿.

此套件导出 类型脚本 类型 ProxyEnvironment, (中文(简体) ), TransportLogger,以及 TransportOptions。 。 。 .

createTransport(baseUrl[, options])

创建可与Arcjet API交谈的传输工具。 它在节点上使用 @connectrpc/connect-node 超过HTTP/2; Bun, Deno, 单独的切入点, 边光,和 workerd 使用情况 @connectrpc/connect-web 换句话说 这太瘦了 包起来 createConnectTransport。 。 。 .

直接 HTTP/2会话(和 HTTP/2-over-)CONNECT 何时 proxyHttpVersion 实值 "2")使PING能够保持活动状态,并连续回收连接 截止日期失败, 匹配 Guard 启用的恢复行为 6137号。 。 。 .

createHttp2Transport(baseUrl[, http2SessionOptions])

创建一个直接的 HTTP/2 连接传输 与 PING 保持- 恒定和 基于最后期限的连接回收。 回返 { transport, sessionManager } 这样 调用者可以将会话拆下. 从 @arcjet/transport/http2。 。 。 .

代理支持

标准代理环境变量( E)HTTP_PROXY 财务报告和审定财务报表 HTTPS_PROXY时 尊重 NO_PROXY)是自动检测的,从而有可能连接到 通过诸如Arcjet API之类的代理 乌贼。当使用代理时, a 行在启动时被记录 info 级别(如此设置) ARCJET_LOG_LEVEL=info 来看 ) (中文(简体) ). 代理URL本身没有被登录,因为它可以包含证书. 怎么样 请求实际上是由运行时间决定的,使用每次运行时间 内建代理支持 :

  • 节点.js - 请求通过HTTP/1.1的代理程序,使用 节点/ js HTTP 代理代理的内置代理支持; 否则会制作 直接通过 HTTP/ 2. 设定 proxyHttpVersion: "2" 改为保留 HTTP/2,同时 代理(参见 HTTP/2 通过代理 页:1.
  • 阿宝 财务报告和审定财务报表 德诺 - 运行时间 fetch 以本地方式执行代理.
  • 边光 财务报告和审定财务报表 workerd 这些边缘运行时间不支持外出 代理环境变量,所以没有使用代理.

NO_PROXY 接受一个逗号或空格分隔的宿主后缀列表,每个后缀带有 可选线索 . 或者说 *. 和可选 :port附加时 * 绕过 每个主机的代理 。 条目被匹配为主机名; IP/ CIDR 范围( 如 10.0.0.0/8)不支持,与 卷曲。关于 Bun 和 德诺的运行时间 fetch 应用 NO_PROXY 它的精确语义是 运行时间.

HTTP/2 通过代理

默认情况下,在Node.js上代理将连接从HTTP/2降级到 HTTP/1.1,因为Node的内置代理代理支持只工作于HTTP/1.1. 对于一个对耐久性敏感的API来说,这很不幸:它放弃了HTTP/2的 多功能, 因此同时请求的突起打开新的代理连接 而不是分享一个.

设置 proxyHttpVersion: "2" 保持 HTTP/2 端对端。 运输打开一个 HTTP 密码 CONNECT 隧道到代理,然后执行 TLS 握手——和 选择的ALPN 谈判 h2 ——直接与来源相通. 只有代理服务器 盲目地推进地道,所以它从不看见,也不能降级 谈判协议.

这需要注意:

  • 只有节点J. Bun和Deno不执行此构建的代理选项 打开;它们通过它们的代理 fetch (关于HTTP/1.1)无论如何 设置,边缘运行时间则根本不代理.
  • 需要一条地道(CONNECT) 代理服务器 常见的HTTPS Egress, 包括 乌贼。终止 TLS 并重新生成一个 HTTP/1.1 与来源的连接( 一个 TLS- 接取 / “ MITM” 代理) 无法 保存 HTTP/2 , 无论这个选项设置到什么位置 .
  • 代理不能缓冲地道. HTTP/2 发送许多小的、依附的 边框。 运输功能已禁用 纳格尔的算法 (单位:千美元)TCP_NODELAY继续 如果代理缓冲器将字节隧道(或离开) Nagle 在其上游套接字上启用) 与延迟的ACK 交互可以 每回旅行增加大约40毫秒的耐久性,从而消除受益. 斯奎德集等隧道代理 TCP_NODELAY 打开 CONNECT 隧道通过 默认; 如果您使用不同的代理, 请确认 .

当没有代理应用时, 此选项没有效果 —— 直接连接总是使用 HTTP/2 (英语).

参数
  • baseUrl (单位:千美元)string,例如: https://example.com/my-api(中文(简体) ) ——所有 HTTP 请求的基础 URL
  • options (单位:千美元)TransportOptions,可选) - 配置
回返

连接传输 createClient 从 @arcjet/protocol。 。 。 .

ProxyEnvironment

用于检测外出代理服务器的环境变量地图( TypeScript) 类型)。 这个形状和 process.env。 。 。 .

TransportLogger

当检测到代理服务器时, Logger 在启动时打印一行( TypeScript) 类型)。 它必须提供 info 方法.

TransportOptions

配置用于 createTransport (简体中文).

字段
  • log (单位:千美元)TransportLogger,可选) —— 检测到代理时, 登录器用于在启动时打印行; 默认值 转换到从 ARCJET_LOG_LEVEL 环境变量
  • proxyEnv (单位:千美元)ProxyEnvironment 或者说 false,可选) – 用于检测出局代理的环境变量;默认为 process.env 因此标准代理环境变量是自动检测的; 通过 false 忽略代理环境变量
  • proxyHttpVersion (单位:千美元)"1.1" 或者说 "2"默认 "1.1"(中文(简体) ) ——在节点.js上使用代理时使用的HTTP版本; "1.1" 路线 通过代理,使用节点.js HTTP代理,同时 "2" 保持 HTTP/2 由 正在通过代理 CONNECT;没有代理无效,或 bun、Deno和边缘运行时间(见 HTTP/2 通过代理(中文(简体) )

许可证

Apache 许可证,2.0版本 © Arcjet实验室股份有限公司.

版本与发布记录

@arcjet/transport 共发布 58 个版本,首次发布于 2024/08/06;过去 12 个月发布了 30 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.15.0latest2026/10/298 天前
1.14.12026/10/0730 天前
1.14.02026/10/021 个月前
1.13.02026/09/171 个月前
1.12.02026/09/091 个月前
1.11.02026/08/272 个月前

其他发布通道:rc → 1.10.0-rc.1。

关于 @arcjet/transport 的常见问题

@arcjet/transport 是什么?

Arcjet协议的运输机制

如何安装 @arcjet/transport?

在项目目录运行 npm install @arcjet/transport,或使用 pnpm add / yarn add / bun add。

@arcjet/transport 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@arcjet/transport 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@arcjet/transport 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.21.0 <23 || >=24.5.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@arcjet/transport 可以商用吗?

@arcjet/transport 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@arcjet/transport 的下载量有多少?

根据 npm 官方下载统计,@arcjet/transport 在 2026/10/07 – 2026/11/05 这 30 天内被下载 333,869 次,日均约 11,129 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@arcjet/transport 还在维护吗?

最新版本 1.15.0 发布于 2026/10/29(8 天前);至今共发布 58 个版本,其中过去 12 个月发布了 30 个;首次发布于 2024/08/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。