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返回码都是保留的,不能使用。

 

posted @ 2017-03-06 18:40  daiker  阅读(2678)  评论(0编辑  收藏  举报