3.9 SUBACK - 订阅确认
服务器将SUBACK数据包发送给客户端以确认接收和处理SUBSCRIBE数据包。
SUBACK数据包包含一个返回代码列表,用于指定SUBSCRIBE请求的每个Subscription中授予的最大QoS级别。
3.9.1 Fixed Header 固定标题
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字节1 | MQTT控制包类型(9) | 保留的 | ||||||
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
字节2 | 剩余长度 |
剩余长度字段
这是变量头的长度(2个字节)加上有效载荷的长度。
3.9.2 Varliable Header 变量头
变量头包含来自正被确认的SUBSCRIBE分组的分组标识符。图3.25-下面的变量头格式说明了变量头的格式。
位 | 7 | 6 | 五 | 4 | 3 | 2 | 1 | 0 |
字节1 | 包标识符MSB | |||||||
字节2 | 包标识符LSB |
3.9.3 Payload 有效载荷
有效负载包含返回代码列表。每个返回码对应于被确认的SUBSCRIBE包中的主题过滤器。SUBACK数据包中的返回码顺序必须与SUBSCRIBE数据包 [MQTT-3.9.3-1]中的主题过滤器的顺序相匹配。
图3.26 - 下面的有效载荷格式说明了在有效载荷中以字节编码的返回码字段。
位 | 7 | 6 | 五 | 4 | 3 | 2 | 1 | 0 |
| 返回代码 | |||||||
字节1 | X | 0 | 0 | 0 | 0 | 0 | X | X |
允许的返回码:
0x00 - 成功 - 最大QoS 0
0x01 - 成功 - 最大QoS 1
0x02 - 成功 - 最大QoS 2
0x80 - 失败
除0x00,0x01,0x02和0x80以外的SUBACK返回码保留,不得使用 [MQTT-3.9.3-2] 。
图3.27 - 有效载荷字节格式非规范性示例 显示了表3.6中简要描述的SUBACK数据包的有效载荷- 有效载荷非规范示例。
成功 - 最大QoS 0 | 0 |
成功 - 最大QoS 2 | 2 |
失败 | 128 |
| 描述 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字节1 | 成功 - 最大QoS 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
字节2 | 成功 - 最大QoS 2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
字节3 | 失败 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |