SUBACK メッセージはブローカーからクライアントへ送信され、 SUBSCRIBE メッセージの受信が確認されます。
SUBACK メッセージには、認可された QoS レベルのリストが含まれます。 これらは、ブローカーの管理者が、 クライアントに特定のトピック名へのサブスクライブを許可したときのレベルです。 現行バージョンのプロトコルでは、ブローカーはサブスクライバーによって要求された QoS レベルを必ず認可します。 認可された QoS レベルの SUBACK メッセージ内での順序は、 対応する SUBSCRIBE メッセージのトピック名の順序と一致します。
以下の表は、固定ヘッダーの形式を示しています。
ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
バイト 1 | メッセージ・タイプ (9) | DUP フラグ | QoS レベル | RETAIN | ||||
1 | 0 | 0 | 1 | x | x | x | x | |
バイト 2 | 残りの長さ |
変数ヘッダーには、確認された SUBSCRIBE メッセージのメッセージ ID が含まれています。 以下の表は、変数ヘッダーの形式を示しています。
ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
バイト 1 | Message ID MSB | |||||||
バイト 2 | Message ID LSB |
ペイロードには、 認可された QoS レベルのベクトルが含まれます。 それぞれのレベルは、対応する SUBSCRIBE メッセージ内のトピック名に対応しています。 SUBACK メッセージ内の QoS レベルの順序は、 SUBSCRIBE メッセージでのトピック名および要求された QoS の組みの順序と一致しています。 変数ヘッダー内のメッセージ ID により、 SUBACK メッセージを対応する SUBSCRIBE メッセージと突き合わせることができます。
以下の表は、バイトでエンコードされた「認可された」QoS フィールドを示しています。
ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
予約済み | 予約済み | 予約済み | 予約済み | 予約済み | 予約済み | QoS レベル | ||
x | x | x | x | x | x |
このバイトの上方 6 ビットは、 現行バージョンのプロトコルでは使用されていません。 これらは将来の利用のために予約済みです。
以下の表は、ペイロードの例を示しています。
認可された QoS | 0 |
認可された QoS | 2 |
以下の表は、このペイロードの形式を示しています。
説明 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
要求された QoS | |||||||||
バイト 1 | 認可された QoS (0) | x | x | x | x | x | x | 0 | 0 |
認可された QoS | |||||||||
バイト 2 | 認可された QoS (2) | x | x | x | x | x | x | 1 | 0 |