3.8 订阅—定义请求

从客户端发送给服务端的订阅包可创建一个活动或多个订阅。每个订阅注册一个或多个标题。服务端发送发布包给客户端已 ,以此发布标题匹配的订阅消息。

3.8.1 订阅固定头

MQTT 5.0规范---订阅请求 - 图1

订阅包固定位3,2,1,0为保留为,必须为0,0,1,0.

剩余长度域

该域为可变头长度+负荷数据,编码为可变字节整数。

3.8.2 订阅可变头

订阅包可变头按数学包含如下域:

  1. 包标识符
  2. 数学

MQTT 5.0规范---订阅请求 - 图2

3.8.2.1 订阅属性(SUBSCRIBE Properties)

3.8.2.1.1 属性长度

订阅包可变头属性长度编码为可变字节整数

11(0x0b),字节,订阅标识标识符,后接可变字节整数代表订阅符。

订阅标识取值范围:1 - 268,435,455.

3.8.2.1.3 用户属性(User Property)

38(0x26) 字节,用户属性标识符,后接UTF-8字符串对。

用户属性可包含多次以代表不同名称-值对。

3.8.3 订阅负荷

订阅包负荷包含一个标题过滤列表,其代表客户端希望订阅的主题。标题过滤器必须为UTF-8编码字符串。每个标题过滤器后跟一个订阅选项字节。

负荷必须包含至少一个标题过滤器以说明客户服希望订阅的标题。

3.8.3.1. 订阅选项

订阅选择位0,1代表最大OoS服务域。它代表服务端发送给客户端的应用消息最大可用QoS等级。

bit2代表无位置选项。当器为1,应用消息不可直传一个与发布连ClientID相同的连接。

bit3 代表保持。如果为1,应用消息直传此消息使用发布中的RETAIN标记。

bit4, bit5代表保持处理选项。这些选项指定保持消息是否在订阅建立发送。它不影响订阅户任意时间点发送。)

0: 订阅是发送保持信息。

1: 当订阅此刻不存在时,发送保持信息

2:订阅时不发送任何保持信息

bit 6,7保留,必须设置为0

MQTT 5.0规范---订阅请求 - 图3

订阅示例

MQTT 5.0规范---订阅请求 - 图4

3.8.4 订阅行为(SUBSCRIBE Actions)

服务端接收到客户端的订阅包,服务端必须响应SUBACK包。SUBACK包的包标识必须与响应的订阅包一致。