MQTT控制---subscribe

Posted daiker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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返回码都是保留的,不能使用。

 

以上是关于MQTT控制---subscribe的主要内容,如果未能解决你的问题,请参考以下文章

转载基于阿里云的MQTT远程控制(Android 连接MQTT服务器,ESP8266连接MQTT服务器实现远程通信控制----简单的连接通信)

ESA2GJK1DH1K升级篇: 网页实现MQTT控制- 网页版MQTT控制设备,网页版MQTT连接阿里云通信

MQTT——控制报文格式

微信小程序+MQTT实现远程控制家用灯泡

网络编程——物联网利器MQTT通信协议详解

网络编程——物联网利器MQTT通信协议详解