|
一、MQTT协议简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议、
二、协议特点:
该协议的特点有:
• 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
• 对负载内容屏蔽的消息传输。
• 使用TCP/IP提供网络连接。
• 有三种消息发布服务质量:
• “至多一次”,消息发布完全依赖于底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如
下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
• “至少一次”,确保消息到达,但消息重复可能会发生。
• “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会
导致不正确的结果。
• 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
• 使用LastWill和Testament特性通知有关各方客户端异常中断的机制。
三、MQTT客户端和服务器
3.1、MQTT 客户端
一个使用 MQTT 协议的设备、应用程序等,它总是建立到服务器的网络连接。
1)可以发布信息,其他客户端可以订阅该信息
2) 订阅其它客户端发布的消息
3)退订或删除应用程序的消息
4)断开与服务器连接
3.2、MQTT 服务器
MQTT 服务器以称为 Broker(消息代理),以是一个应用程序或一台设备。它是位于消息发布者 和订阅者之间
1)接受来自客户端的网络连接
2)接受客户端发布的应用信息
3)处理来自客户端的订阅和退订请求
4)向订阅的客户转发应用程序消息
3.3、主题(Topic)
连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。
要订阅的主题。一个主题可以有多个级别,级别之间用斜杠字符分隔。例如,/world 和 emq/emqtt/emqx 是有效的主题。
订阅者的Topic name支持通配符#和+ :
# 支持一个主题内任意级别话题
+只匹配一个主题级别的通配符
客户端成功订阅某个主题后,代理会返回一条 SUBACK 消息,其中包含一个或多个 returnCode 参数
主题筛选器(Topic Filter)
一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
3.4、QoS(消息传递的服务质量水平)
服务质量,标志表明此主题范围内的消息传送到客户端所需的一致程度。
1)值 0:不可靠,消息基本上仅传送一次,如果当时客户端不可用,则会丢失该消息。
2)值 1:消息应传送至少 1 次。
3)值 2:消息仅传送一次。
3.5、会话(Session)
1)每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。
2)订阅(Subscription)
3)订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。
客户端在成功建立TCP连接之后,发送CONNECT消息,在得到服务器端授权允许建立彼此连接的CONNACK消息之后,客户端会发送SUBSCRIBE消息,订阅感兴趣的Topic主题列表(至少一个主题)
订阅的主题名称采用UTF-8编码,然后紧跟着对应的QoS值
3.3、发布(publish)
控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息,MQTT 客户端发送消息请求,发送完成后返回应用程序线程
比如安卓的推送服务,还有一些即时通信软件如微信等也是采用的推送技术。
3.3、负载(Payload)
消息订阅者所具体接收的内容
|
|