若是您需要开发一个基于局域网的 web 应用,那么 mdns 绝对是您必须要用到的 npm 包之一。mdns 是一款开源的、跨平台的多播 DNS 服务的 npm 包,实现了使用组播 DNS SD 协议进行服务发现,支持 Mac OSx、Windows、Linux、iOS 和 Android 等平台。使用 mdns,我们可以轻松地在本地网络中发现和连接服务。
安装
在使用 mdns 前,要求您已经提前安装了 Node.js 和 npm。请在终端中执行以下命令来安装 mdns。
npm i mdns
使用方式
发现可用服务
通过 mdns,我们可以发现已经在网络内注册并且拥有特定服务类型和名称的服务。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------- - ------------------------------------- ----------------------- --------- -- - ------------------ --------- ------------- ----- ------------- -------------- --- ----------------
以上代码可以监听名为 'http' 的 TCP 服务,并在该服务被找到时,输出服务的名称、主机和端口号。
注册服务
通过 mdns,我们还可以在网络内注册一个服务。
const mdns = require('mdns'); const ad = mdns.createAdvertisement(mdns.tcp('http'), 80, { name: 'my-web-app', }); ad.start();
以上代码会在网络内广播一个名为 'my-web-app' 的 Web 服务,并监听于 80 端口。
实例分析
现在,我们将一步一步来实现一个较为简单的实例。
在本地主机上,我们启动用于提供 HTTP 服务的一个很小的 Node.js 应用,其中 Hello World 以及以下内容被输出。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - --------------------------- --------- -- - ------------------------ ------------------- --------- --- -------------------- ------------------- ------- -- -------------------------
请将以上代码保存在一个名为 'http-server.js' 的文件中。
接下来,我们将创建一个用于发现 HTTP 服务的应用,并连接到它。请将以下代码保存为名为 'http-client.js' 的文件。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- - ---- - - ---------------------------- ------- ----- ------- - ------------------------- ----------------------- --------- -- - ------------------ ---- --------- ------------- -------------- ----- -------------- - - ----- ------------- ----- ------------- ----- ---- -- ----- ------- - ---------------------------- ---------- -- - ------------------- ------- -- - ------------------------ ------- --- ------------------ -- -- - ---------------- --- --- -------------- --- ----------------
在终端中,我们运行如下命令以启动发现应用。
node http-client.js
接着,重启发现应用,可以看到输出了以下内容。
Found HTTP Server: localhost 8080 Received: Hello World!
以上应用演示了如何从一个 Node.js 应用中发现和连接其他服务。
结束语
通过 mdns,我们可以快速、高效地找到本地网络内的其他服务,并实现网络应用的快速部署和开发。希望本文对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/85216