MQTT协议(五)>>> 【SUBSCRIBE】订阅主题

客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅

为了将应用消息转发给与那些订阅匹配的主题,服务端发送PUBLISH报文给客户端

SUBSCRIBE 报文也(为每个订阅)指定了最大的QoS等级,服务端根据这个发送应用消息给客户端。

固定报头

MQTT协议(五)>>> 【SUBSCRIBE】订阅主题_第1张图片

剩余长度字段

等于可变报头的长度(2字节)加上有效载荷的长度。

可变报头

可变报头包含报文标识符

例子设置报文标识符为10:
MQTT协议(五)>>> 【SUBSCRIBE】订阅主题_第2张图片

有效载荷

SUBSCRIBE 报文的有效载荷包含了一个主题过滤器列表,它们表示客户端想要订阅的主题

每一个过滤器后面跟着一个字节,这个字节被叫做 服务质量要求(Requested QoS)。它给出了服务端向客户端发送应用消息所允许的最大QoS 等级

SUBSCRIBE 报文的有效载荷必须包含至少一对主题过滤器 和 QoS等级字段组合

请求的最大服务质量等级字段编码为一个字节,它后面跟着UTF-8编码的主题名,那些主题过滤器 /和QoS等级组合是连续地打包。

SUBSCRIBE 报文有效载荷格式:
MQTT协议(五)>>> 【SUBSCRIBE】订阅主题_第3张图片
MQTT协议(五)>>> 【SUBSCRIBE】订阅主题_第4张图片
有效载荷示例:
MQTT协议(五)>>> 【SUBSCRIBE】订阅主题_第5张图片
MQTT协议(五)>>> 【SUBSCRIBE】订阅主题_第6张图片

响应

服务端收到客户端发送的一个SUBSCRIBE 报文时,必须使用SUBACK 报文响应。

SUBACK 报文必须和等待确认的SUBSCRIBE 报文有相同的报文标识符。

允许服务端在发送SUBACK报文之前就开始发送与订阅匹配的PUBLISH报文。

你可能感兴趣的:(MQTT,OneNET)