# @balena/happy-eyeballs 中文文档

规范地址：https://npmcn.com/package/%40balena/happy-eyeballs/

版本：0\.0\.6
npm 元数据更新时间：2026-01-20T12:07:41.326Z
中文译文更新时间：2026-11-07T16:29:07.965Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40balena/happy-eyeballs
原文对照：https://npmcn.com/package/%40balena/happy-eyeballs/?lang=original
项目主页：https://github.com/balena-io-modules/happy-eyeballs#readme
源码仓库：https://github.com/balena-io-modules/happy-eyeballs

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：47 kB，26 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：2 个
- 首次发布：2021-11-18T14:14:14.445Z
- 最新版本发布：2021-11-30T17:31:14.387Z
- 近 30 天下载量：4906（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 0 个）

## 中文简介

补丁 http(s). 代理执行快乐眼球2(rfc8305), IETF 公布的标准

## 安装

```sh
npm install @balena/happy-eyeballs
```

也可以使用：`pnpm add @balena/happy-eyeballs`、`yarn add @balena/happy-eyeballs`、`bun add @balena/happy-eyeballs`

## README

## @balena-io/快乐眼球

此软件包补丁了节点JS `http(s).Agent` 执行 IETF 标准,"快乐眼球2"([rfc8305 (中文(简体) )](https://datatracker.ietf.org/doc/html/rfc8305)) (中文(简体) ).

它通过尝试同时尝试一个给定的主机名的多个ip地址来提高客户端的性能和可靠性. 见 [解释](https://npmcn.com/package/%40balena/happy-eyeballs/#readme-explanation) 更详细.

### 安装

```
npm i --save-dev @balena/happy-eyeballs
```

```
yarn add --dev @balena/happy-eyeballs
```

### 快速使用

要使用此库, 只需导入

```ts
import '@balena/happy-eyeballs/eye-patch';
```

或者说

```js
require('@balena/happy-eyeballs/eye-patch')
```

在你的顶部 `.js`编号 :`.ts` 条目文件.

注:将替换 `http.Agent.prototype.createConnection` 财务报告和审定财务报表 `https.Agent.prototype.createConnection`,但它试图尽可能保留现有的功能.

### 明确用途

如果你想更明确,你可以明确补丁 `http(s).Agent`数字 :

```ts
import { patch } from '@balena/eye-patch';
import { Agent as HttpAgent } from 'http';
import { Agent as HttpsAgent } from 'https';

patch(HttpAgent, {delay: 300});
patch(HttpsAgent, {delay: 300});
```

虽然,这正是什么 `import '@balena/happy-eyeballs/eye-patch';` 无论如何.

请注意: `delay` 指的是在尝试下一个地址之前的延迟。 这是浏览器使用的延迟 .

稍后您可以解开后缀, 这将取消最后的补丁 :

```ts
unpatch([HttpsAgent, HttpAgent])
```

或重置到代理的原始值 :

```ts
reset([HttpsAgent, HttpAgent])
```

另外,请注意,违约是 `HttpAgent` 财务报告和审定财务报表 `HttpsAgent`,因此,这与

```ts
reset()
```

接下来 `patch` 财务报告和审定财务报表 `unpatch` 我也一样.

你也可以执行自己的经纪人 并替换 `createConnection` 方法 :

```ts
import { createConnection } from '@balena/happy-eyeballs';
import { Agent as HttpAgent } from 'http';
import { Agent as HttpsAgent } from 'https';

export class MyHttpAgent extends HttpAgent {
  createConnection = createConnection;
  delay = 250;
}

export class MyHttpsAgent extends HttpsAgent {
  createConnection = createConnection;
  delay = 250;
}
```

这和以前的例子基本相同.

### 解释

基本上,算法相当于:

1.  接收主机名
2.  我们以前和这个东道主有联系吗?

-   如果是:
    -   尝试上次成功连接的家族( Ipv4 或 IPv6), 如果我们之前已经连接到此主机
    -   如果在300米范围内连接不成功,请继续下一步
-   如果没有,请采取下一步行动.

3.  DNS查询是否同时返回IPv4和IPv6地址?

-   如果是:尝试,在全部试验之前,两个地址同时进行
-   如果不是:只要试试现存家庭的地址

4.  将每个地址按链条排列,同时对两个家庭进行试验,直至: \*. 已连接 \*. 所有连接尝试超时 \*. 所有连接尝试失败
5.  如果没有连接成功, 请返回第一次连接尝试出错, 或是“ 超时出错 ”

## 常见问题

### @balena/happy-eyeballs 是什么？

补丁 http\(s\)\. 代理执行快乐眼球2\(rfc8305\), IETF 公布的标准

### 如何安装 @balena/happy-eyeballs？

在项目目录运行 npm install @balena/happy-eyeballs，或使用 pnpm add / yarn add / bun add。

### @balena/happy-eyeballs 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/balena\_\_happy-eyeballs 是否存在。

### @balena/happy-eyeballs 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @balena/happy-eyeballs 可以商用吗？

@balena/happy-eyeballs 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @balena/happy-eyeballs 的下载量有多少？

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

### @balena/happy-eyeballs 还在维护吗？

最新版本 0\.0\.6 发布于 2021/12/01（4 年前）；至今共发布 19 个版本，其中过去 12 个月发布了 0 个；首次发布于 2021/11/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

