Uma mensagem UNSUBSCRIBE é enviada pelo cliente para o intermediário para cancelar assinatura de tópicos denominados.
A tabela abaixo mostra um exemplo de formato de cabeçalho fixo.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
byte 1 | Tipo de Mensagem (10) | Sinalizador DUP | Nível de QoS | RETAIN | ||||
1 | 0 | 1 | 0 | 0 | 0 | 1 | x | |
byte 2 | Comprimento Restante |
Se esta mensagem estiver sendo reenviada porque uma mensagem SUBACK não chegou após um período de tempo especificado, o bit DUP será definido para indicar ao intermediário que ela pode ser uma duplicata de uma mensagem já recebida.
O cabeçalho variável contém um ID da Mensagem porque uma mensagem UNSUBSCRIBE possui um nível de QoS 1.
Geralmente, a biblioteca de protocolos gera o ID da Mensagem e o transmite de volta ao aplicativo de publicação, por exemplo, como uma identificador de retorno. Isso impede vários aplicativos ou vários encadeamentos de publicação, em execução em um único cliente de gerarem IDs de Mensagem duplicados.
O ID da Mensagem 0 (0x0000) está reservado como um ID da Mensagem inválido, e não deve ser utilizado. O ID de Mensagem é um inteiro não sinalizado de 16 bits, que geralmente aumenta exatamente uma vez, de uma mensagem para a próxima, mas não é necessário fazer isso. Os dois bytes do ID da Mensagem são ordenados como MSB, seguidos por LSB (big-endian).
A tabela abaixo mostra um formato de exemplo para o cabeçalho variável com um ID de Mensagem de 10.
Descrição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Identificador de Mensagens | |||||||||
byte 1 | ID da Mensagem MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | ID da Mensagem LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
O cliente cancela assinatura da lista de tópicos denominados na carga útil. As cadeias são codificadas por UTF e são compactadas de forma contígua. Os nomes de tópicos em uma mensagem UNSUBSCRIBE não são compactados. A tabela mostra uma carga útil de exemplo.
Nome do Tópico | "a/b" |
Nome do Tópico | "c/d" |
A tabela abaixo mostra o formato desta carga útil.
Descrição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Nome do Tópico | |||||||||
byte 1 | Comprimento MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | Comprimento 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 |
Nome do Tópico | |||||||||
byte 6 | Comprimento MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 7 | Comprimento 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 |