MQTT控制---subscribe
连接服务端
客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅。
固定报头
报头长度:2 Bytes
1、报头控制类型(0x82)
报文SUBSCRIBE控制报固定报头的第3、2、1、0位是保留位,必须设置为0,、0、1、0。
服务器必须将其它的任何值当做是不合法的并关闭连接。
2、剩余长度
等于可变报头的长度加上有效载荷的长度。
可变报头
可变报头包含客户端标识符,红色标记。(eg:82 09 00 02 00 04 30 37 35 35 00)
1、标识符 。
如上面的红色标记部分。
有效载荷
SUBSCRIBE报文的有效载荷包含一个主题过滤器列表,表示客户端想要订阅的主题。
每一个过滤器后面跟着一个字节的QoS。
SUBSCRIBE报文的有效载荷必须包含至少一对过滤器和QoS组合。
每对组合如下格式:
QoS的高6位字节保留。
响应
server收到SUBSCRIBE报文时,必须使用SUBACK报文响应。
SUBACK报文必须和等待确认的SUBSCRIBE报文有相同的报文标识符。
-----------------------------------------------------------------------------------------------------------------------
SUBACK-订阅确认
server发送给client的SUBACK,用于确认它已经收到并且正在处理SUBSCRIBE报文。
SUBACK报文包含一个返回码清单,指定了SUBSCRIBE请求的每个订阅被授予的最大QoS等级。
固定报头
报头格式描述如下:
剩余长度字段 = 可变报头的长度 + 有效载荷的长度
可变报头
可变报头包含标识符:(90 03 00 01 00)
有效载荷
有效载荷包含一个返回码清单,每个返回码对应等待确认的SUBSCRIBE报文中的一个主题过滤器。
允许的返回值:
0x00 - 最大QoS 0
0x01 - 成功,最大QoS 1
0x02 - 成功,最大QoS 2
0x80 - 失败
0x00、0x01、0x02、0x80之外的SUBACK返回码都是保留的,不能使用。