如何在 Node.js 中使用 MQTT

2025年5月9日 | 阅读 3 分钟

Node.js 中的轻量级、事件驱动的消息系统效率与 MQTT 相结合。消息队列遥测传输 (MQTT) 是最适合物联网 (IoT) 应用的协议,因为它允许设备以最少的带宽发布和订阅消息。由于 Node.js 是非阻塞的,程序员可以快速创建可扩展的实时应用程序。像 mqtt.js 这样的库对于管理消息、主题和客户端连接非常有用。总而言之,它们是完美的组合,在智能家居自动化或遥测系统甚至实时仪表板等应用中都能找到完美的应用。 Node.js 和 MQTT 在物联网方面配合良好,因为有 SSL/TLS 等安全选项可确保安全的数据传输。

MQTT 协议(消息队列遥测传输)是二进制的,它使用轻量级的消息传递,可应用于 IoT 应用,以实现带宽效率和有效通信。它允许设备发布和订阅主题,从而简化数据传输。借助 Node.js 和 Chrome 的 V8 JavaScript 引擎,可以开发实时和基于事件的应用程序。MQTT 和 Node.js 可以集成,帮助开发人员创建可扩展且有效的物联网应用程序,包括遥测应用、智能家居系统和实时仪表板。

在 Node.js 中使用 MQTT 的原因

在 Node.js 中使用 MQTT 的原因如下:

  • 轻量级且快速:由于 MQTT 是为资源受限的设备而设计的,因此它非常适合移动设备和物联网之间的通信。
  • 事件驱动架构:MQTT 的架构完美契合 Node.js 的事件驱动设计,从而增强了其非阻塞输入/输出方法。
  • 成熟的社区:可以找到丰富的 MQTT 和 Node.js 生态系统库和工具。
  • 可扩展解决方案:通过将 Node.js 的可扩展性与 MQTT 的发布/订阅概念相结合,可以管理庞大的设备网络。
  • 要在 MQTT 中订阅主题,请使用返回的 Client 实例的 on 函数来监视连接状态。
  • 使用 MQTT Box 进行可视化:要发布消息并订阅它们,请使用 MQTT Box Chrome App。

Node.js 中 MQTT 的关键概念

  1. Broker(代理):一个帮助客户端互相通信的服务器。
  2. Client(客户端):连接到代理的程序或设备。
  3. Topics(主题):一种分层的消息分类系统(例如,home/temperature)。
  4. Service Quality (QoS)(服务质量):交付保证级别
    • QoS 0:最多一次。
    • QoS 1
    • QoS 2:恰好一次。
  5. Payload(载荷):消息中发送的数据称为载荷。

在 Node.js 中安装 MQTT 的过程

a. 安装 MQTT 库

b. 连接到 MQTT Broker:使用 HiveMQ 等公共代理或使用 Mosquitto 等工具创建自己的代理。这是连接到 MQTT 代理的两种方法。

c. 成功安装 MQTT 库并连接到 MQTT 代理后,举例说明。

示例

安全性

  • 为了确保安全通信,请使用 SSL/TLS (mqtts://)。
  • 如果代理要求,请使用您的用户名和密码进行身份验证。

用例

  • IoT 设备通信:它使得传感器和执行器能够更有效地通信。
  • 实时监控:创建具有遥测数据的仪表板以进行实时监控。
  • 智能家居自动化:智能家居自动化允许您监控和控制连接到家庭网络的设备。

结论

总之,MQTT 与 Node.js 的集成提供了一个强大的基础,用于构建可扩展且有效的实时应用程序,尤其是在物联网环境中。Node.js 轻量级、非阻塞的事件驱动架构使其非常适合设备和应用程序之间的轻松通信。两者都可以以极低的资源使用量提供可靠的数据传输,用于遥测、智能家居系统或工业自动化。使用 mqtt.js 等库,处理数百万设备和数百万消息的安全可扩展解决方案比以往任何时候都更容易。凭借 Node.js 的速度和 MQTT 的易用性,可以在短时间内实现满足现代连接需求的创新实时应用程序。