当前位置: 首页 > news >正文

协议 MQTT

目录

什么是 MQTT 协议?

MQTT 的特点

MQTT 的工作原理

MQTT 关键组件

MQTT 的应用场景

如何使用 MQTT?

小结


什么是 MQTT 协议?

MQTT(Message Queuing Telemetry Transport)是一种基于轻量级发布/订阅模式的消息传输协议,特别适用于对网络带宽和设备资源有严格限制的场景。MQTT 设计的初衷是为远程设备之间的低带宽、不可靠网络通信提供解决方案,因此在物联网(IoT)领域广泛应用。

MQTT 的特点

  1. 轻量级:MQTT 消息头部非常小,适合低带宽和高延迟的网络环境。

  2. 发布/订阅模型:设备通过主题(Topic)发送和接收消息,而无需直接连接彼此。这种解耦的设计非常灵活,适合大量设备同时通信。

  3. 质量服务等级(QoS):MQTT 提供三种消息传递质量服务等级,保证消息的传递可靠性:

    • QoS 0:消息最多传递一次,接收端不做确认,无法保证消息一定送达。
    • QoS 1:消息至少传递一次,接收端会确认接收。
    • QoS 2:消息仅传递一次,确保消息不会重复。
  4. 长连接:MQTT 使用 TCP 作为传输协议,支持长连接,减少了重复连接的开销,非常适合物联网设备的长时间通信需求。

  5. 保留消息和遗嘱消息:保留消息用于新订阅者获取最新信息,而遗嘱消息确保客户端意外断开时通知订阅者。

MQTT 的工作原理

MQTT 的核心架构是基于客户端和**服务器(Broker)**的模式。客户端通过 TCP/IP 网络连接到 Broker,进行消息的发布和订阅。以下是 MQTT 工作流程的简要描述:

  1. 客户端连接到 Broker:客户端通过发送 CONNECT 报文与 Broker 建立连接,Broker 负责管理所有客户端的连接和消息传递。
  2. 发布消息:发布者客户端发布一条消息到某个主题(Topic),并指定这条消息的 QoS 等级,消息将传递给 Broker。
  3. 订阅消息:订阅者客户端向 Broker 订阅某个主题,当有其他客户端发布到该主题的消息时,Broker 会将消息转发给所有订阅该主题的客户端。
  4. 消息传递:根据 QoS 等级,Broker 确保消息可靠性地传递给订阅者。
  5. 断开连接:当客户端不再需要通信时,它会通过发送 DISCONNECT 报文与 Broker 断开连接。

MQTT 关键组件

  • Broker(消息代理):负责消息的接收、过滤和分发,管理客户端的连接。
  • 客户端:可以是发布者(Publisher)或订阅者(Subscriber),发布者发布消息,订阅者接收消息。
  • 主题(Topic):每条消息都会关联一个主题,主题是一个层次化的字符串,用于标识消息的类别和范围,订阅者根据主题接收消息。

MQTT 的应用场景

  1. 物联网(IoT):大量传感器和设备需要实时通信,MQTT 以其低带宽需求和高可靠性成为 IoT 系统的首选协议。
  2. 智能家居:例如灯光、温控等智能设备之间的消息传递。
  3. 车辆跟踪:用于车辆数据的远程传输,支持高延迟网络。
  4. 医疗设备:低功耗设备需要稳定的数据传输。

如何使用 MQTT?

  1. 安装 MQTT Broker
    首先,MQTT 通信需要一个 Broker。比较常见的 MQTT Broker 软件有:
  • Mosquitto:一个开源的 MQTT Broker,可以通过以下命令安装:

    sudo apt-get install mosquitto mosquitto-clients
  1. 连接到 Broker 使用 MQTT 客户端(如 Python 库 paho-mqtt)连接到 MQTT Broker,并发布和订阅消息。

  2. 使用 paho-mqtt 库编写客户端

    • 安装 paho-mqtt
    pip install paho-mqtt
    • 编写发布者(Publisher)代码
    import paho.mqtt.client as mqtt broker = "test.mosquitto.org" port = 1883 topic = "test/topic" # 创建 MQTT 客户端实例 client = mqtt.Client() # 连接到 Broker client.connect(broker, port) # 发布消息 client.publish(topic, "Hello MQTT!") # 断开连接 client.disconnect()
    • 编写订阅者(Subscriber)代码
    import paho.mqtt.client as mqtt broker = "test.mosquitto.org" port = 1883 topic = "test/topic" # 当收到消息时的回调函数 def on_message(client, userdata, message): print(f"收到消息: {message.payload.decode()}") # 创建 MQTT 客户端实例 client = mqtt.Client() # 设置回调函数 client.on_message = on_message # 连接到 Broker client.connect(broker, port) # 订阅主题 client.subscribe(topic) # 保持连接 client.loop_forever()

小结

MQTT 是一种轻量、可靠、扩展性强的协议,特别适合物联网和其他资源受限的场景。它基于发布/订阅模式,能够有效地减少网络带宽消耗,并支持不同的消息传递服务质量等级。通过 Broker 的协调,MQTT 能够让大量设备进行稳定通信,广泛应用于智能家居、医疗、交通等多个领域。


http://www.mrgr.cn/news/55362.html

相关文章:

  • 电影评论网站开发:Spring Boot技术指南
  • react18中如何实现同步的setState来实现所见即所得的效果
  • Unity 同项目多开
  • R语言中的stat_compare_means():如何解决anova目标对象的方法问题
  • Atlas800昇腾服务器(型号:3000)—AIPP加速前处理(四)
  • 【私有云盘搭建】Portainer CE部署NextCloud,轻松实现公网访问
  • 国产操作系统的介绍与试用
  • 【ios】使用TestFlight将app分发给测试人员(超详细)
  • 微信小程序实现canvas电子签名
  • intel和AMD突然联姻,这操作给我看傻了
  • 移除Microsoft Edge浏览器“由你的组织管理“提示的方法
  • springboot图书馆座位预约系统-计算机毕业设计源码85670
  • Vue 变量关键字,var、let 和 const区别
  • 工业物联网网关的概述及工作原理-天拓四方
  • 怎么修改文件的创建日期?操作详细的5个超简单方法
  • RHCE的学习(3)
  • 【C++】哈希 Hash
  • 私域电商新纪元:消费增值模式引领业绩飞跃
  • stable diffusion WEBUI Brief summary
  • MATLAB深度学习工具箱——建议收藏!
  • CMA软件评测机构内部审核核查点清单,如何选择内审方法?
  • 本地和远程服务器连接
  • 什么是孤独症患者的表现?洞悉内心,感知世界的独特视角
  • 智慧型软件项目可行性研究报告模板案例(Word原件)
  • 雷池WAF自动化实现安全运营实操案例终极篇
  • 根据日志优化微调