Un messaggio UNSUBSCRIBE è inviato dal client al broker per annullare la sottoscrizione ad argomenti definiti.
La seguente tabella mostra un esempio del formato dell'intestazione fissa.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
byte 1 | Tipo messaggio (10) | Indicatore DUP | Livello QoS | RETAIN | ||||
1 | 0 | 1 | 0 | 0 | 0 | 1 | x | |
byte 2 | Lunghezza rimanente |
Se questo messaggio viene nuovamente inviato perché un messaggio SUBACK non è arrivato entro un periodo di timeout specificato, il bit DUP viene impostato per indicare al broker che potrebbe essere un duplicato di un messaggio già ricevuto.
L'intestazione variabile contiene un ID messaggio perché un messaggio UNSUBSCRIBE ha un livello QoS 1.
In genere, la libreria del protocollo genera l'ID messaggio e lo ritrasmette all'applicazione di pubblicazione, ad esempio come handle di ritorno. Questo impedisce che più applicazioni, più thread di pubblicazione, in esecuzione su un singolo client generino ID messaggio duplicati.
L'ID messaggio 0 (0x0000) è riservato come ID messaggio non valido e non può essere utilizzato. L'ID messaggio è un numero intero senza segno a 16-bit, che in genere aumenta esattamente di uno da un messaggio all'altro, ma non obbligatoriamente. I due byte dell'ID messaggio sono ordinati come MSB, seguito da LSB (big-endian).
La seguente tabella mostra un esempio di formato per l'intestazione variabile con un ID messaggio pari a 10.
Descrizione | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Identificativo del messaggio | |||||||||
byte 1 | MSB ID messaggio (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | LSB ID messaggio (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
Il client annulla la sottoscrizione all'elenco di argomenti definiti nel payload. Le stringhe sono codificate UTF e compresse in modo contiguo. I nomi argomento in un messaggio UNSUBSCRIBE non sono compressi. La seguente tabella mostra un esempio di payload.
Nome argomento | "a/b" |
Nome argomento | "c/d" |
La seguente tabella mostra il formato di questo payload.
Descrizione | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Nome argomento | |||||||||
byte 1 | MSB della lunghezza (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | LSB della lunghezza (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 |
Nome argomento | |||||||||
byte 6 | MSB della lunghezza (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 7 | LSB della lunghezza (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 |