@devioarts/capacitor-mdns

中文文档
0.2.0发布于 2026/11/07MITTypeScriptESM + CJS零依赖近 30 天下载 3625

capacitorJS 的 mDNS 插件

中文使用文档
文档目录17 节
  1. 安装
  2. 从0.1.0升级
  3. 使用量
  4. 不断发现
  5. 平台设置
  6. API 密码
  7. 获取 Plugin 公式 ()
  8. 开始广播(...)
  9. 停止广播( )
  10. 发现(...)
  11. 监视服务(...)
  12. 停止监视( C)
  13. 添加倾听器( “ serviceFound ” QQ “ service Lost” ,...)
  14. 添加倾听器( “ watch Error, ” )..
  15. 删除所有收听器( )
  16. 接口
  17. 类型异名

@ deviots/ 电容- mdns

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

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

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

内存 playground 是开发过程中使用的示例应用程序.

安装

npm install @devioarts/capacitor-mdns
npx cap sync

Electron 也安装 bonjour-service@~1.4.0 运行 npx cap-electron sync。 。 。 . 见 电机设置 详细情况.

从0.1.0升级

0.2.0版本保留了现有的方法签名和结果形状并增加了连续 发现。 它还会收紧输入验证,改变重叠的发现和错误处理, 并将宣布的iOS最小值提高到15.0. 评议 升级注释 在更新现有应用程序之前.

使用量

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,用于贡献原始持续发现 特性在 公关7。 。 。 .

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

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 并使用导出自 @devioarts/capacitor-mdns/electron/settings。 。 。 .

详细设置如下:

API 密码

Capacitor mDNS插件的公用API表面.

获取 Plugin 公式 ()

getPluginPlatform() => Promise<MdnsPluginPlatformResult>

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

回返情况: Promise<MdnsPluginPlatformResult>


开始广播(...)

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

开始宣传Bonjour/mDNS服务.

参数类型说明
optionsMdnsBroadcastOptions- 链接 MdnsB 广播选项{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

回返情况: Promise<MdnsBroadcastResult>


停止广播( )

stopBroadcast() => Promise<MdnsStopResult>

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

回返情况: Promise<MdnsStopResult>


发现(...)

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

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

参数类型说明
optionsMdnsDiscoverOptions- 链接 Mdns 发现选项{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

回返情况: Promise<MdnsDiscoverResult>


监视服务(...)

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

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

参数类型
optionsMdnsWatchOptions

回返情况: Promise<MdnsWatchResult>


停止监视( C)

stopWatching() => Promise<MdnsWatchStopResult>

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

回返情况: Promise<MdnsWatchStopResult>


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

addListener(eventName: 'serviceFound' | 'serviceLost', handler: (event: MdnsServiceEvent) => void) => Promise<PluginListenerHandle>
参数类型
eventName'serviceFound' | 'serviceLost'
handler(event: MdnsServiceEvent) => void

回返情况: Promise<PluginListenerHandle>


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

addListener(eventName: 'watchError', handler: (event: MdnsWatchErrorEvent) => void) => Promise<PluginListenerHandle>
参数类型
eventName'watchError'
handler(event: MdnsWatchErrorEvent) => void

回返情况: Promise<PluginListenerHandle>


删除所有收听器( )

removeAllListeners() => Promise<void>

接口

MdnsPluginPlatform 结果

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

Prop类型说明
platformMdnsPluginPlatform产生这一结果的平台实施.

MdnsB 广播结果

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

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

MdnsB 广播选项

启动Bonjour/mDNS广告的选项.

Prop类型说明
typestring服务类型(包括后继点).
namestring服务实例名称( 最大63 UTF-8 字节) 。 默认为 DevIOArtsMDNS。 。 。 .
portnumberTCP端口发布广告.
txtMdnsTxt可选的 TXT 键 - 值对 (UTF-8 字符串).

Mdns stopResult 存档副本

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

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

Mdns 发现结果

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

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

服务

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

Prop类型说明
namestring服务的实例名称(可能由OS独有,例如"我的App (2)").
typestring完整的服务类型,包括后缀点,例如:. "_http._tcp."。 。 。 .
domainstring服务域; 典型 "local."。 。 。 .
portnumber接通服务广告.
hostsstring[]已解析出数字IP地址,先为IPv4,再为任何可用范围后缀的IPv6.
hostnamestring由平台提供主机名,例如. "my-device.local."。 。 。 .
txtMdnsTxtTXT字典 (键 = 值).

Mdns 发现选项

Bonjour/mDNS发现的选项.

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

监视结果

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

Prop类型
errorboolean
errorMessagestring | null
watchersStartednumber

Mdns 监视选项

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

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

Mdns 监视停止

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

Prop类型
errorboolean
errorMessagestring | null
watchingboolean

插件听筒

Prop类型
remove() => Promise<void>

服务事件

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

Prop类型
serviceMdnsService

监视错误事件

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

Prop类型
typestring
errorMessagestring
watchingboolean

类型异名

MdnsPlugin 窗体

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

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

MdnsTxt 数据

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

Record<string, string>

记录

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

{ [P in K]: T; }

版本与发布记录

@devioarts/capacitor-mdns 共发布 4 个版本,首次发布于 2025/09/03;过去 12 个月发布了 3 个版本。

版本发布日期距今
0.2.0latest2026/11/075 天前
0.1.02026/07/084 个月前
0.0.32026/06/105 个月前
0.0.22025/09/031.2 年前

关于 @devioarts/capacitor-mdns 的常见问题

@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 和提交记录判断。