Eine UNSUBSCRIBE-Nachricht wird vom Client an den Broker gesendet, um die Subskription angegebener Themen zu kündigen.
Die nachfolgende Tabelle zeigt ein Beispiel zum Format des festen Headers.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Byte 1 | Nachrichtenart (10) | DUP-Argument | QoS-Stufe | RETAIN | ||||
1 | 0 | 1 | 0 | 0 | 0 | 1 | x | |
Byte 2 | Verbleibende Länge |
Wenn die Nachricht erneut gesendet wird, weil eine SUBACK-Nachricht nach einer bestimmten Zeitdauer nicht eingetroffen ist, wird das DUP-Bit gesetzt. Es zeigt dem Broker an, dass die Nachricht unter Umständen das Duplikat einer bereits empfangenen Nachricht ist.
Der variable Header enthält eine Nachrichten-ID, da eine UNSUBSCRIBE-Nachricht die QoS-Stufe 1 hat.
Für gewöhnlich generiert die Protokollbibliothek die Nachrichten-ID und gibt sie an die veröffentlichende Anwendung zurück, beispielsweise als Rückgabe-Handle. Auf diese Weise wird vermieden, dass mehrere Anwendungen oder Veröffentlichungs-Threads auf einem einzelnen Client ausgeführt werden und doppelte Nachrichten-IDs generieren.
Die Nachrichten-ID 0 (0x0000) ist als ungültige Nachrichten-ID reserviert und darf nicht verwendet werden. Die Nachrichten-ID ist eine ganze 16-Bit-Zahl ohne Vorzeichen, die sich üblicherweise mit jeder Nachricht genau um den Wert von 1 erhöht. Dies ist jedoch nicht zwingend erforderlich. Die beiden Bytes der Nachrichten-ID werden in der Reihenfolge MSB, gefolgt von LSB (Big Endian), sortiert.
Die nachfolgende Tabelle zeigt ein Beispielformat des variablen Headers mit der Nachrichten-ID 10.
Beschreibung: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Nachrichten-ID | |||||||||
Byte 1 | Nachrichten-ID MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte 2 | Nachrichten-ID LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
Der Client kündigt die Subskription der in der Nutzlast angegebenen Themenliste. Die Zeichenfolgen sind UTF-verschlüsselt und werden zusammenhängend gepackt. Themennamen in einer UNSUBSCRIBE-Nachricht werden nicht komprimiert. Die nachfolgende Tabelle zeigt ein Nutzlast-Beispiel.
Themenname | "a/b" |
Themenname | "c/d" |
Die nachfolgende Tabelle zeigt das Format dieser Nutzlast.
Beschreibung: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Themenname | |||||||||
Byte 1 | Länge MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte 2 | Länge LSB (3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Byte 3 | 'a' (0x61) | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
Byte 4 | '/' (0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
Byte 5 | 'b' (0x62) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
Themenname | |||||||||
Byte 6 | Länge MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte 7 | Länge LSB (3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Byte 8 | 'c' (0x63) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
Byte 9 | '/' (0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
Byte 10 | 'd' (0x64) | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |