# @devioarts/capacitor-mdns 中文文档

规范地址：https://npmcn.com/package/%40devioarts/capacitor-mdns/

版本：0\.2\.0
npm 元数据更新时间：2026-11-07T02:44:07.937Z
中文译文更新时间：2026-11-12T03:26:00.088Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：391 kB，48 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@capacitor/core ^8\.0\.0，bonjour-service ~1\.4\.0
- 首次发布：2025-09-02T23:03:26.091Z
- 最新版本发布：2026-11-07T02:44:07.775Z
- 近 30 天下载量：3625（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 3 个）

## 中文简介

capacitorJS 的 mDNS 插件

## 安装

```sh
npm install @devioarts/capacitor-mdns
```

也可以使用：`pnpm add @devioarts/capacitor-mdns`、`yarn add @devioarts/capacitor-mdns`、`bun add @devioarts/capacitor-mdns`

## README

# @ deviots/ 电容- mdns

在iOS上支持 Bonjour/mDNS 广告和发现的 Capacitor 的 mDNS 插件, Android, Electron, 和一个安全的网络倒下.

**需要支持的Capacitor版本:v8. iOS 15或后期.**

#### 支持平台: iOS Android Electron 网络倒置

内存 [`playground`](https://npmcn.com/package/%40devioarts/capacitor-mdns/playground) 是开发过程中使用的示例应用程序.

## 安装

```bash
npm install @devioarts/capacitor-mdns
npx cap sync
```

Electron 也安装 `bonjour-service@~1.4.0` 运行 `npx cap-electron sync`。 。 。 . 见 [电机设置](https://npmcn.com/package/%40devioarts/capacitor-mdns/docs/electron.md) 详细情况.

## 从0.1.0升级

0.2.0版本保留了现有的方法签名和结果形状并增加了连续 发现。 它还会收紧输入验证,改变重叠的发现和错误处理, 并将宣布的iOS最小值提高到15.0. 评议 [升级注释](https://npmcn.com/package/%40devioarts/capacitor-mdns/CHANGELOG.md#020---2026-11-07) 在更新现有应用程序之前.

## 使用量

```ts
import { mDNS } from '@devioarts/capacitor-mdns';

const runtime = await mDNS.getPluginPlatform();

await mDNS.startBroadcast({ type: '_http._tcp.', name: 'MyService', port: 9100 });
const result = await mDNS.discover({ type: '_http._tcp.', timeout: 3000 });
await mDNS.stopBroadcast();
```

## 不断发现

谢谢, [伊德里米语Name](https://github.com/Idrimi),用于贡献原始持续发现 特性在 [公关7](https://github.com/devioarts/capacitor-mdns/pull/7)。 。 。 .

`watchServices()` 在iOS,Android和Electron上监视多种服务类型直至停止. 开始前注册收听器;一个新的有效呼叫取代了以前的手表.

```ts
const found = await mDNS.addListener('serviceFound', ({ service }) => {
  console.log('Found', service.name, service.hosts, service.port);
});
const lost = await mDNS.addListener('serviceLost', ({ service }) => {
  console.log('Lost', service.name, service.hosts, service.port);
});
const errors = await mDNS.addListener('watchError', (event) => {
  console.error(event.type, event.errorMessage, event.watching);
});

const result = await mDNS.watchServices({
  types: ['_http._tcp.', '_airplay._tcp.', '_googlecast._tcp.'],
});
// Later, including when leaving the screen:
await mDNS.stopWatching();
await Promise.all([found.remove(), lost.remove(), errors.remove()]);
```

发现/丢失的事件包含完整的服务快照; `hosts` 总是数组。 一个服务 在解决两个事件之前就消失了 浏览器错误停止监视并发射 `watchError` 与 `watching: false`; 已耗尽的解析重试 `watching: true`。 。 。 . `stopWatching()` 离开广播 和一发的发现运行。 浏览器不支持 mDNS.

## 平台设置

Android 需要 mDNS/网络权限 `AndroidManifest.xml`; 插件也声明它们 故在同步时将它们合并。 iOS 需要在 `Info.plist`。 。 。 . 电能支持计划用于 [`devioarts/capacitor-electron`](https://github.com/devioarts/capacitor-electron) 并使用导出自 `@devioarts/capacitor-mdns/electron/settings`。 。 。 .

详细设置如下:

-   [iOS 和 Android 设置](https://npmcn.com/package/%40devioarts/capacitor-mdns/docs/platform-setup.md)
-   [电机设置](https://npmcn.com/package/%40devioarts/capacitor-mdns/docs/electron.md)
-   [游戏场](https://npmcn.com/package/%40devioarts/capacitor-mdns/docs/playground.md)
-   [运行时间行为](https://npmcn.com/package/%40devioarts/capacitor-mdns/docs/runtime-behavior.md)

## API 密码

-   [`getPluginPlatform()`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-getpluginplatform)
-   [`startBroadcast(...)`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-startbroadcast)
-   [`stopBroadcast()`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-stopbroadcast)
-   [`discover(...)`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-discover)
-   [`watchServices(...)`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-watchservices)
-   [`stopWatching()`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-stopwatching)
-   [`addListener('serviceFound' | 'serviceLost', ...)`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-addlistenerservicefound--servicelost-)
-   [`addListener('watchError', ...)`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-addlistenerwatcherror-)
-   [`removeAllListeners()`](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-removealllisteners)
-   [接口](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-interfaces)
-   [类型异名](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-type-aliases)

Capacitor mDNS插件的公用API表面.

### 获取 Plugin 公式 ()

```typescript
getPluginPlatform() => Promise<MdnsPluginPlatformResult>
```

返回当前服务插件呼叫的平台执行 .

**回返情况:** `Promise<[MdnsPluginPlatformResult](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnspluginplatformresult)>`

* * *

### 开始广播(...)

```typescript
startBroadcast(options: MdnsBroadcastOptions) => Promise<MdnsBroadcastResult>
```

开始宣传Bonjour/mDNS服务.

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| **`options`** | `[MdnsBroadcastOptions](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsbroadcastoptions)` | \- 链接 [MdnsB 广播选项](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsbroadcastoptions){\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |

**回返情况:** `Promise<[MdnsBroadcastResult](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsbroadcastresult)>`

* * *

### 停止广播( )

```typescript
stopBroadcast() => Promise<MdnsStopResult>
```

停止对当前注册服务进行广告( 无则不开放) .

**回返情况:** `Promise<[MdnsStopResult](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsstopresult)>`

* * *

### 发现(...)

```typescript
discover(options?: MdnsDiscoverOptions | undefined) => Promise<MdnsDiscoverResult>
```

发现特定类型的服务,并按实例名称选择过滤.

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| **`options`** | `[MdnsDiscoverOptions](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsdiscoveroptions)` | \- 链接 [Mdns 发现选项](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsdiscoveroptions){\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |

**回返情况:** `Promise<[MdnsDiscoverResult](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsdiscoverresult)>`

* * *

### 监视服务(...)

```typescript
watchServices(options: MdnsWatchOptions) => Promise<MdnsWatchResult>
```

持续观察好几种服务类型. 一个有效的呼叫取代了以前的手表. 开始前登记听众 。 每个已解析的服务发送 `serviceFound` 一次; 失踪发射 `serviceLost` 与它的最后一个快照。 未造成损失 未解决的服务。 观察和一发的发现可以一起运行. 感谢伊德里米贡献了最初的连续发现特征(PR #7).

| 参数 | 类型 |
| --- | --- |
| **`options`** | `[MdnsWatchOptions](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnswatchoptions)` |

**回返情况:** `Promise<[MdnsWatchResult](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnswatchresult)>`

* * *

### 停止监视( C)

```typescript
stopWatching() => Promise<MdnsWatchStopResult>
```

停止所有观察者。 这件事情解决后,手表上没有发生任何事件.

**回返情况:** `Promise<[MdnsWatchStopResult](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnswatchstopresult)>`

* * *

### 添加倾听器( “ serviceFound ” QQ “ service Lost” ,...)

```typescript
addListener(eventName: 'serviceFound' | 'serviceLost', handler: (event: MdnsServiceEvent) => void) => Promise<PluginListenerHandle>
```

| 参数 | 类型 |
| --- | --- |
| **`eventName`** | `'serviceFound' | 'serviceLost'` |
| **`handler`** | `(event: [MdnsServiceEvent](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsserviceevent)) => void` |

**回返情况:** `Promise<[PluginListenerHandle](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-pluginlistenerhandle)>`

* * *

### 添加倾听器( “ watch Error, ” )..

```typescript
addListener(eventName: 'watchError', handler: (event: MdnsWatchErrorEvent) => void) => Promise<PluginListenerHandle>
```

| 参数 | 类型 |
| --- | --- |
| **`eventName`** | `'watchError'` |
| **`handler`** | `(event: [MdnsWatchErrorEvent](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnswatcherrorevent)) => void` |

**回返情况:** `Promise<[PluginListenerHandle](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-pluginlistenerhandle)>`

* * *

### 删除所有收听器( )

```typescript
removeAllListeners() => Promise<void>
```

* * *

### 接口

#### MdnsPluginPlatform 结果

获取PluginPlatform () 的结果 。 用于验证已路由的电话 穿过预期的站台桥.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`platform`** | `[MdnsPluginPlatform](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnspluginplatform)` | 产生这一结果的平台实施. |

#### MdnsB 广播结果

开播结果 Broadcast (. 说明广告是否活跃 和最终服务名称。 如果失败, `error` 是真的,还有 `errorMessage` 描述这个问题.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`error`** | `boolean` | 如果操作失败, 则属实 . |
| **`errorMessage`** | `string | null` | 错误描述或成功无效 . |
| **`name`** | `string` | 最终(可能统一)服务实例名称. 失败时空出. |
| **`publishing`** | `boolean` | 广告商是否活跃,或者在清理失败后可能仍然活跃. |

#### MdnsB 广播选项

启动Bonjour/mDNS广告的选项.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`type`** | `string` | 服务类型(包括后继点). |
| **`name`** | `string` | 服务实例名称( 最大63 UTF-8 字节) 。 默认为 `DevIOArtsMDNS`。 。 。 . |
| **`port`** | `number` | TCP端口发布广告. |
| **`txt`** | `[MdnsTxt](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnstxt)` | 可选的 TXT 键 - 值对 (UTF-8 字符串). |

#### Mdns stopResult 存档副本

停播的结果(. 显示广告主是否活跃 调用后( 通常为错误) 并包含错误信息 .

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`error`** | `boolean` | 如果停止时发生错误, 则为真 . |
| **`errorMessage`** | `string | null` | 错误描述或成功无效 . |
| **`publishing`** | `boolean` | 经确认停止后是虚假的;当停止失败时是真实的,广告商可能仍然活跃. |

#### Mdns 发现结果

发现结果( ). 包含正常服务和错误信息.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`error`** | `boolean` | 如果发现错误, 则属实( 部分结果可能仍然存在 ). |
| **`errorMessage`** | `string | null` | 当没有发生错误时错误描述或无效 . |
| **`servicesFound`** | `number` | 方便与服务相等 长度. |
| **`services`** | `MdnsService[]` | 以数字地址解析服务 。 错误时空出; 部分结果被丢弃 . |

#### 服务

已发现的Bonjour/mDNS服务的正常描述. 从QQlink mDNSPlugin.discover}返回.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`name`** | `string` | 服务的实例名称(可能由OS独有,例如"我的App (2)"). |
| **`type`** | `string` | 完整的服务类型,包括后缀点,例如:. `"_http._tcp."`。 。 。 . |
| **`domain`** | `string` | 服务域; 典型 `"local."`。 。 。 . |
| **`port`** | `number` | 接通服务广告. |
| **`hosts`** | `string[]` | 已解析出数字IP地址,先为IPv4,再为任何可用范围后缀的IPv6. |
| **`hostname`** | `string` | 由平台提供主机名,例如. `"my-device.local."`。 。 。 . |
| **`txt`** | `[MdnsTxt](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnstxt)` | TXT字典 (键 = 值). |

#### Mdns 发现选项

Bonjour/mDNS发现的选项.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`type`** | `string` | 服务类型(包括后继点). |
| **`name`** | `string` | 可选实例名称过滤器( 前缀安全) . |
| **`timeout`** | `number` | 发现超时数以毫秒计. 只限数量;分数被截断后被夹到0-2147483647. |
| **`useNW`** | `boolean` | 只使用 iOS 提示 `NWBrowser` 改为 `NetServiceBrowser`。 。 。 . |

#### 监视结果

已请求本地浏览器; 稍后的失败报告通过 `watchError`。 。 。 .

| Prop | 类型 |
| --- | --- |
| **`error`** | `boolean` |
| **`errorMessage`** | `string | null` |
| **`watchersStarted`** | `number` |

#### Mdns 监视选项

在iOS,Android和Electron上持续发现的选项.

| Prop | 类型 | 说明 |
| --- | --- | --- |
| **`types`** | `string[]` | 非空性服务类型列表. 轨迹点是可选的;重复被合并. |

#### Mdns 监视停止

停止独立观看任何活动广播.

| Prop | 类型 |
| --- | --- |
| **`error`** | `boolean` |
| **`errorMessage`** | `string | null` |
| **`watching`** | `boolean` |

#### 插件听筒

| Prop | 类型 |
| --- | --- |
| **`remove`** | `() => Promise<void>` |

#### 服务事件

发现和丢失的事件都包含完整的服务快照,包括 `hosts`。 。 。 .

| Prop | 类型 |
| --- | --- |
| **`service`** | `[MdnsService](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-mdnsservice)` |

#### 监视错误事件

浏览器故障停止了手表;已耗尽的服务分辨率重试使其运行.

| Prop | 类型 |
| --- | --- |
| **`type`** | `string` |
| **`errorMessage`** | `string` |
| **`watching`** | `boolean` |

### 类型异名

#### MdnsPlugin 窗体

处理插件呼叫的运行时间执行 .

`'ios' | 'android' | 'electron' | 'web'`

#### MdnsTxt 数据

一个 Bonjour/ mDNS 服务的 TXT 记录的密钥 - 值图 . 值为UTF-8字符串;二进制有效载荷不由这个API支持.

`[Record](https://npmcn.com/package/%40devioarts/capacitor-mdns/#readme-record)<string, string>`

#### 记录

构造 T 类型 K 的一组属性类型

`{ [P in K]: T; }`

## 常见问题

### @devioarts/capacitor-mdns 是什么？

capacitorJS 的 mDNS 插件

### 如何安装 @devioarts/capacitor-mdns？

在项目目录运行 npm install @devioarts/capacitor-mdns，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@capacitor/core（^8\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @devioarts/capacitor-mdns 支持 TypeScript 吗？

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

### @devioarts/capacitor-mdns 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @devioarts/capacitor-mdns 可以商用吗？

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

### @devioarts/capacitor-mdns 的下载量有多少？

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

### @devioarts/capacitor-mdns 还在维护吗？

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

