El cliente envía un mensaje UNSUBSCRIBE al intermediario para anular la suscripción a temas específicos.
La tabla que sigue muestra un ejemplo de formato de cabecera fija.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
byte 1 | Tipo de mensaje (10) | Indicador DUP | Nivel de QoS | RETAIN | ||||
1 | 0 | 1 | 0 | 0 | 0 | 1 | x | |
byte 2 | Longitud restante |
Si el mensaje se está volviendo a enviar debido a que no ha llegado un mensaje SUBACK después de un tiempo de espera excedido especificado, se establece el bit de DUP para indicar al intermediario que puede haberse recibido ya un duplicado del mensaje.
La cabecera variable contiene un ID de mensaje debido a que un mensaje UNSUBSCRIBE tiene un nivel de QoS 1.
Normalmente, la biblioteca de protocolos genera el ID de mensaje (Message ID) y lo devuelve a la aplicación de publicación como, por ejemplo, un manejador de devolución. Esto evita que varias aplicaciones o hebras de publicación se ejecuten en un solo cliente, generen ID de mensajes duplicados.
El ID de mensaje 0 (0x0000) está reservado como ID de mensaje no válido y no debe usarse. El ID de mensaje es un entero sin signo, de 16 bits, que normalmente aumenta exactamente en 1 de un mensaje a otro, pero que no está obligado a hacerlo. Los dos bytes del ID de mensaje están ordenados como MSB seguido de LSB (big-endian).
La tabla que sigue muestra un formato de ejemplo para la cabecera variable con un ID de mensaje 10.
Descripción | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Identificador de mensaje | |||||||||
byte 1 | MSB de ID de mensaje | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | LSB de ID de mensaje (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
El cliente anula la suscripción de la lista de temas que aparecen en la carga útil. Las series de caracteres están codificadas en UTF y empaquetadas de forma contigua. Los nombres de temas de un mensaje UNSUBSCRIBE no se comprimen. La tabla que sigue muestra una carga útil de ejemplo.
Nombre de tema | "a/b" |
Nombre de tema | "c/d" |
La tabla de abajo describe el formato de esta carga útil.
Descripción | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Nombre de tema | |||||||||
byte 1 | MSB de longitud (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | LSB de longitud (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 |
Nombre de tema | |||||||||
byte 6 | MSB de longitud (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 7 | LSB de longitud (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 |