客户机将 UNSUBSCRIBE 消息发送到代理以从指定的主题取消预订。
下表显示了固定头格式的示例。
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
字节 1 | 消息类型(10) | DUP 标志 | QoS 级别 | RETAIN | ||||
1 | 0 | 1 | 0 | 0 | 0 | 1 | x | |
字节 2 | 剩余长度 |
如果由于在指定的超时周期后 SUBACK 消息还未到达,而要重新发送此消息,则设置 DUP 位以便向代理表明它可能是已经接收过的重复消息。
可变头包含消息标识,因为 UNSUBSCRIBE 消息有 QoS 级别 1。
通常,协议库生成消息标识,并将它传递回发布应用程序(例如,作为返回句柄)。这防止在单个客户机上运行的多个应用程序或多个发布进程生成重复的消息标识。
消息标识 0(0x0000)保留为无效的消息标识,不能使用。消息标识为 16 位不带正负号的整数,通常一条消息到另一条消息的消息标识正好增加 1,但这并不是必需的。消息标识的两个字节的排列次序为 MSB,后跟 LSB(大尾数法)。
下表显示了带有消息标识为 10 的可变头的示例格式。
描述 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
消息标识 | |||||||||
字节 1 | 消息标识 MSB(0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
字节 2 | 消息标识 LSB(10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
客户机从有效内容中指定的主题列表取消预订。该字符串是 UTF 编码的,且连续地压缩。UNSUBSCRIBE 消息中的主题名称是不压缩的。下表显示了一个示例有效内容。
主题名称 | "a/b" |
主题名称 | "c/d" |
下表显示了该有效内容的格式。
描述 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
主题名称 | |||||||||
字节 1 | 长度 MSB(0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
字节 2 | 长度 LSB(3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
字节 3 | 'a' (0x61) | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
字节 4 | '/' (0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
字节 5 | 'b' (0x62) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
主题名称 | |||||||||
字节 6 | 长度 MSB(0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
字节 7 | 长度 LSB(3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
字节 8 | 'c' (0x63) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
字节 9 | '/' (0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
字节 10 | 'd' (0x64) | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |