简介
mdns-js 是一个 Node.js 模块,用于在局域网内进行 Zeroconf 操作,如发现网络中的服务、广播服务等。
此模块使用了 Multicast DNS (mDNS) 协议,允许设备在没有 DHCP 或 DNS 服务器的情况下,在局域网内自动发现和通讯。
安装
使用 npm 安装 mdns-js:
npm install mdns-js
用法
发现服务
-- -------------------- ---- ------- --- ---- - ------------------- --- -------- - - ----------------------------- ------------------------------- ------ -- --- ------- - ----------------------------------------------- ------------------- -------- -- - ------------------- --- -------------------- -------- ------ - ---------------------- ------ --- --------------------- -------- ------ - ----------------------- ------ --- ----------------
以上代码创建了一个 _workstation._tcp.local. 类型的服务浏览器,成功运行后能监听到局域网内有关该类型服务的更新和解析消息。
广播服务
var mdns = require('mdns-js'); var ad = mdns.createAdvertisement(mdns.tcp('http'), 8080); ad.start();
以上代码创建了一个 HTTP 服务广告,告诉网络中的其他设备当前机器上提供了 HTTP 服务,并监听 8080 端口。
深入理解
mdns-js 模块内部将各种 mDNS 消息解析为对应的对象,并提供了一些操作接口。
下面是一个例子,手动发送一些 mDNS 消息:
-- -------------------- ---- ------- --- ---- - ------------------- --- ------ - -------------------- ------------- ---------- - - ----- --------------------------- ----- ----- - - ---
以上代码手动发送一个问题 name: '_workstation._tcp.local.'
,期待可以在网络上接收到回复。
启动应答程序:
-- -------------------- ---- ------- --- ---- - ------------------- --- ------ - ------------------------------------------- -------------------- -------- ----- ---- - ------------------------------ --- - -- ------- -- ------ - ------------ - ----- --------------------------- ----- ------ ----- -------------------------------- - --- - --- ---
以上代码创建了一个 DNS 服务器,监听请求,并对接收到的 _workstation._tcp.local.
类型的问题进行相应。
启动后,再运行前一段代码,控制台会输出:
RESPONSES RECEIVED [ { name: '_workstation._tcp.local.', type: 'PTR', class: 32768, flush: true, data: 'Lw-01._workstation._tcp.local.' } ]
意义与指导
随着 IoT 设备网络化越来越广泛,Zeroconf 技术的重要性不言而喻。在嵌入式设备上使用 Node.js 则成为了一个非常流行的方案,因为 Node.js 能方便地与其他语言进行通讯,并在很多平台上都有完善的支持,故 mdns-js 在嵌入式设备上的应用也越来越普遍。
因此,对于前端工程师而言,掌握 mdns-js 的使用对于接下来进一步研究嵌入式开发,或者对于设备接入我们前端模块等等都是非常有帮助的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/71347