mqtt协议和http协议区别 MQTT( 三 )


标志设置为0:服务端必须基于当前会话(使用客户端标识符识别)的状态恢复与客户端的通信 。
标志设置为1:客户端和服务端必须丢弃之前的任何会话并开始一个新的会话 。会话仅持续和网络连接同样长的时间 。
——9. 遗嘱标志 WILL FLAG: byte8的bit2位标志 。
遗嘱标志(Will Flag)被设置为1,表示如果连接请求被接受了,遗嘱(Will Message)消息必须被存储在服务端并且与这个网络连接关联 。之后网络连接关闭时,服务端必须发布这个遗嘱消息,除非服务端收到DISCONNECT报文时删除了这个遗嘱消息 。
服务端发送CONNACK报文响应从客户端收到的CONNECT报文 。服务端发送给客户端的第一个报文必须是CONNACK 。
如果客户端在合理的时间内没有收到服务端的CONNACK报文,客户端应该关闭网络连接 。合理 的时间取决于应用的类型和通信基础设施 。
CONNACK报文没有有效载荷 。
PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息 。
固定包头:
注意byte1的bit3为重发标志DUP 。
如果DUP标志被设置为0,表示这是客户端或服务端第一次请求发送这个PUBLISH报文 。如果DUP标志被设置为1,表示这可能是一个早前报文请求的重发 。
服务端发送PUBLISH报文给订阅者时,收到(入站)的PUBLISH报文的DUP标志的值不会被传播 。发送(出站)的PUBLISH报文与收到(入站)的PUBLISH报文中的DUP标志是独立设置的,它的值必须单独的根据发送(出站)的PUBLISH报文是否是一个重发来确定 。
可变包头:
主题名 :topic name
报文标识符 :packet identitfier 。
有效载荷 :有效载荷包含将被发布的应用消息 。数据的内容和格式是应用特定的 。有效载荷的长度这样计算:用固定报头中的剩余长度字段的值减去可变报头的长度 。包含零长度有效载荷的PUBLISH报文是合法的 。
响应:PUBLISH报文的接收者必须按照根据PUBLISH报文中的QoS等级发送响应 。
PUBACK报文是对QoS 1等级的PUBLISH报文的响应 。
PUBACK报文没有有效载荷 。
PUBREC报文是对QoS等级2的PUBLISH报文的响应 。它是QoS 2等级协议交换的第二个报文 。
PUBREC报文没有有效载荷 。
PUBREL报文是对PUBREC报文的响应 。它是QoS 2等级协议交换的第三个报文 。
PUBREL报文没有有效载荷 。
PUBCOMP报文是对PUBREL报文的响应 。它是QoS 2等级协议交换的第四个也是最后一个报文 。
PUBCOMP报文没有有效载荷 。
客户端向服务端发送 SUBSCRIBE 报文用于创建一个或多个订阅 。每个订阅注册客户端关心的一个或多个主题 。为了将应用消息转发给与那些订阅匹配的主题,服务端发送PUBLISH报文给客户端 。SUBSCRIBE报文也(为每个订阅)指定了最大的QoS等级,服务端根据这个发送应用消息给客户端 。
有效载荷:
SUBSCRIBE报文的有效载荷包含了一个主题过滤器列表,它们表示客户端想要订阅的主题 。SUBSCRIBE报文的有效载荷必须包含至少一对主题过滤器 和 QoS等级字段组合 。没有有效载荷的SUBSCRIBE报文是违反协议的 。
响应:
服务端收到客户端发送的一个SUBSCRIBE报文时,必须使用SUBACK报文响应,SUBACK报文必须和等待确认的SUBSCRIBE报文有相同的报文标识符 。
服务端发送SUBACK报文给客户端,用于确认它已收到并且正在处理SUBSCRIBE报文 。SUBACK报文包含一个返回码清单,它们指定了SUBSCRIBE请求的每个订阅被授予的最大QoS等级 。
有效载荷:
有效载荷包含一个返回码清单 。每个返回码对应等待确认的SUBSCRIBE报文中的一个主题过滤器 。返回码的顺序必须和SUBSCRIBE报文中主题过滤器的顺序相同 。
客户端发送UNSUBSCRIBE报文给服务端,用于取消订阅主题 。
有效载荷 :
UNSUBSCRIBE报文的有效载荷包含客户端想要取消订阅的主题过滤器列表 。
UNSUBSCRIBE报文中的主题过滤器必须是连续打包的、按照定义的UTF-8编码字符串
UNSUBSCRIBE报文的有效载荷必须至少包含一个消息过滤器 。没有有效载荷的UNSUBSCRIBE报文是违反协议的 。
响应:
UNSUBSCRIBE报文提供的主题过滤器(无论是否包含通配符)必须与服务端持有的这个客 户端的当前主题过滤器集合逐个字符比较 。如果有任何过滤器完全匹配,那么它(服务端)自己的订阅将被删除,否则不会有进一步的处理 。
如果服务端删除了一个订阅:
——它必须停止分发任何新消息给这个客户端 [] 。

秒懂生活扩展阅读