Skip to content

基本概念

MQTTMessage Queuing Telemetry Transport)是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布/订阅型消息传输协议,特别适用于物联网应用。采用简洁的协议设计和低带宽消耗,能够在不可靠的网络环境下可靠地传输消息。

MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。MQTT中的客户端既能发送消息也能接收信息。发送消息的客户端先要把信息发送到服务端(MQTT服务器),服务端先把信息进行必要的保存(提升MQTT传输信息的稳定性)。在判断转发给哪些客户端,订阅了相关主题的客户端将收到信息。MQTT客户端在发送信息的同时也可能在接收信息。发布者可以订阅自己发布的主题从而收到自己发送的信息

消息结构:主题Topic(字符串) 负载Payload(字符串)

发布者Publisher 服务器Broker 订阅者:Subscriber

只要订阅者订阅了发布者发布的主题的消息,任何的订阅者够可以收到消息。

MQTT发布/订阅特性:

客户端在发布和订阅信息时,可以相互独立(发布者/订阅者不管平台上有多少客户端订阅了该主题),且在空间上可以分离(客户端的空间位置可以在不同的地方),时间上可以异步(信息在发送接收的时间上可能不同步,受网络因素影响,服务器转发给订阅者的信息可能会有延迟)。

MQTT的优点:

  • 轻巧高效(客户端小,消息头小以优化网络带宽)
  • 双向通讯
  • 可扩展大量连接设备
  • 消息传输可靠,启用安全。

MQTT主题

主题是字符串,区分大小写,主题是可以使用空格的(建议不要使用),不建议使用中文字符

主题分级:MQTT主题各个级别之间使用/来分隔。如:Tyler-1/motor/1/speed 主题分为四个级别


主题通配符

  • 单级别的通配符:+ (可以替代一个MQTT主题级别)如:订阅了主题Tyler-1/motor/+/speed ,则可以收到以下主题的信息Tyler-1/motor/1/speed Tyler-1/motor/2/speed Tyler-1/motor/3/speed

  • 多级别的通配符:# 可以涵盖任意数量的主题级别,多级通配符必须是主题中的最后一个字符,如订阅了该主题Tyler-1/motor/# 则可以收到Tyler-1/motor/1/speed Tyler-1/motor/2/temperature的信息

以$开始的主题是MQTT服务端系统保留的特殊主题,我们不能随意的订阅或发送消息。

Released under the MIT License.