UNSUBSCRIBE 메시지는 클라이언트가 이름 지정된 토픽에서 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이 있으므로 가변 헤더에는 메시지 ID가 들어 있습니다.
일반적으로 프로토콜 라이브러리가 메시지 ID를 생성하여 하나의 리턴 핸들로서 이 ID를 publish 응용프로그램에 다시 전달합니다. 이는 단일 클라이언트에서 실행 중인 여러 응용프로그램 또는 여러 publish하는 스레드가 중복된 메시지 ID를 생성하지 못하게 합니다.
메시지 ID 0 (0x0000)은 올바르지 않은 메시지 ID로 예약되어 있으므로 사용해서는 안됩니다. 메시지 ID는 16비트의 사인이 없는 정수로서, 일반적으로는 하나의 메시지에서 그 다음 메시지로 정확히 1씩 증가하지만, 반드시 그렇게 할 필요는 없습니다. 2바이트의 메시지 ID 순서는 먼저 MSB가 오고 그 다음에 LSB(Big Endian)가 옵니다.
다음 표에서는 메시지 ID가 10인 가변 헤더의 형식 예를 보여줍니다.
설명 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
메시지 ID | |||||||||
바이트 1 | 메시지 ID MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
바이트 2 | 메시지 ID LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
클라이언트는 페이로드(payload)에 이름 지정된 토픽 목록을 unsubscribe합니다. 문자열은 UTF 인코딩되어 연속적으로 채워집니다. UNSUBSCRIBE 메시지의 토픽 이름은 압축되어 있지 않습니다. 다음 표에서는 페이로드(payload)의 예를 보여줍니다.
토픽 이름 | "a/b" |
토픽 이름 | "c/d" |
다음 표에서는 이 페이로드(payload)의 형식을 보여줍니다.
설명 | 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 |