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 を生成し、 パブリッシュしたアプリケーションに戻りハンドルとして戻します。 このような方法により、 1 つのクライアントで実行している複数のアプリケーションまたは複数のパブリッシュ・スレッドによって、 重複したメッセージ ID が生成される危険を回避できます。
メッセージ ID 0 (0x0000) は、無効なメッセージ ID として予約済みなので、 使用してはなりません。 メッセージ ID は 16 ビットの符号なし整数です。 通常は大きくなっていきますが、あるメッセージから別のメッセージへと 1 つずつ大きくすることは求められていません。 メッセージ ID の 2 バイトの順序は、まず MSB、その後で LSB になります (ビッグ・エンディアン)。
以下の表は、10 というメッセージ ID を持つ変数ヘッダーの形式の例を示しています。
説明 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
メッセージ ID | |||||||||
バイト 1 | Message ID MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
バイト 2 | Message ID LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
クライアントは、ペイロードで指定されたトピックのリストからアンサブスクライブします。 ストリングは UTF エンコードされており、連続して圧縮されています。 UNSUBSCRIBE メッセージのトピック名は、圧縮されません。 以下の表は、ペイロードの例を示しています。
トピック名 | "a/b" |
トピック名 | "c/d" |
以下の表は、このペイロードの形式を示しています。
説明 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
トピック名 | |||||||||
バイト 1 | Length MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
バイト 2 | Length 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 | Length MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
バイト 7 | Length 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 |