3.8 订阅—定义请求
从客户端发送给服务端的订阅包可创建一个活动或多个订阅。每个订阅注册一个或多个标题。服务端发送发布包给客户端已 ,以此发布标题匹配的订阅消息。
3.8.1 订阅固定头
订阅包固定位3,2,1,0为保留为,必须为0,0,1,0.
剩余长度域
该域为可变头长度+负荷数据,编码为可变字节整数。
3.8.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
订阅示例
3.8.4 订阅行为(SUBSCRIBE Actions)
服务端接收到客户端的订阅包,服务端必须响应SUBACK包。SUBACK包的包标识必须与响应的订阅包一致。