@mdns (英语)
* IETF RFC 6762
多广播 DNS
* IETF RFC 6763
DNS 服务发现
* * 部分内容 宇航员实验室广播套件
✅ 生产质量
该图书馆今天已准备就绪(v1.x.x),但将接受大量的API升级并重新装备使用 更多时间@astronautlabs/*框架v2.x,因此预计在那些 版本发布.
在Typescript中,完全具有mDNS和DNS-SD执行功能. 没有本地的依赖关系,在操作系统一级工作 只要在您的平台上支持多个 UDP 套接字听器( 在现代 macOS 中支持) , 执行, Windows, Linux (英语). 进行持续整合的广泛测试。 供宇航员实验室的NMOS IS-04使用 ,但可用于任何一般用途的mDNS/DNS-SD使用案例.
npm install @astronautlabs/mdns
使用量
在端口4321上广告一个HTTP服务器:
import { Advertisement } from '@astronautlabs/mdns';
const ad = new Advertisement('_http._tcp', 4321)
.start();
查找所有 Google Cast 兼容设备 :
import { Browser } from '@astronautlabs/mdns';
new Browser('_googlecast._tcp')
.on('serviceUp', service => console.log("Device up: ", service))
.on('serviceDown', service => console.log("Device down: ", service))
.start();
您也可以使用此库查询多播 DNS , 因为您会使用 MulticastDNS 课.
import { MulticastDNS } from '@astronautlabs/mdns';
let ipAddress: string = await MulticastDNS.A('myService._http._tcp');
您还可以使用 MulticastDNS.query() 把记录自己拿回来.
import { MulticastDNS, SRVRecord } from '@astronautlabs/mdns';
let { answer, related } = await MulticastDNS.query<SRVRecord>('myService._http._tcp', 'SRV');
// answer: SRVRecord, related: ResourceRecord[]
验证
服务类型名称和TXT记录有一些特定的限制.
服务名称 :
- 必须从下划线开始
- 小于16个字符,包括领先的
- 必须以字母或数字开头
- 只有字母/数字/连字符(但不连续: --)
TXT 记录 :
- 键 #% 9 个字符
- 密钥必须是 ASCii 并且不能使用 '='
- 值必须是字符串、缓冲、数字或布尔
- 每个密钥/ 值对必须 < 255 字节
- TXT 对象为 < 1300字节
贷项
此软件包基于 重力软件 dnssd.js 软件包,它本身的基础 大卫·西格尔的 mdns 软件包。 。 。 .