3.4 发布确认( PUBACK)

发布确认是对QoS1发布包的响应。

3.4.1 发布固定头

MQTT 5.0规范--发布确认 - 图1

剩余字节长度

它为可变头长度,编码为可变字节整数。

3.4.2 发布可变头(PUBACK Variable Header)

发布确认可变头按顺序包含如下域:

  1. 要确认的发布包的包标识。
  2. 发布确认消息码
  3. 属性

MQTT 5.0规范--发布确认 - 图2

3.4.2.1 发布确认消息码(PUBACK Reason Code)

可变头字节3位发布确认消息码。如果剩余长度为2,则无消息码,默认为0x00(成功)。

MQTT 5.0规范--发布确认 - 图3

MQTT 5.0规范--发布确认 - 图4

客户端或服务端发送发布确认包必须使用其中一个消息码。

消息码和属性长度可缺省,即默认消息码为0x00(Success)及没有属性,这种情况剩余长度为2.

3.4.2.2. 发布确认属性(PUBACK Property)

3.4.2.2.1 属性长度(Property Length)

位于PUBACK可变头的属性长度编码为可变头整数,如果剩余字节数小于4,则无属性长度,默认为0.

3.4.2.2.2. 消息字符串(Reason String)

31(0x1F), 字节,消息字符串标识,后跟UTF-8编码字符串代表响应相关消息。

该消息为可直接阅读消息,无需解码。

3.4.2.2.3 用户属性(User Property

38(0x26),字节,用户属性标识,后跟UTF-8字符串对。

该属性可提供进一步诊断信息。

当发布确认包要超过接收者的最大包小时,发送者不可发送次属性。

用户属性可包含多次代表多个名称键值对,同样名称也可出现多次