次にやりとりされたMQTTメッセージの中身を見てみましょう。以下の説明に関しては、参考文献「MQTT V3.1 プロトコル仕様1」をあわせて参照してください。
connectメッセージ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------------------------------------------------------------------------- 0000 10 1b 00 04 4d 51 54 54 04 02 00 3c 00 0f 70 63 ....MQTT...<..pc 0010 31 34 36 31 38 33 31 35 31 37 31 37 31 1461831517171
0x10がMQTTのコネクト要求であることを示し、次の0x1bはメッセージの長さ、“ MQTT”はプロトコル名を示します。0x04はプロトコルバージョン、0x02は接続フラグを示します。Clean Sessionフラグが立っていますが、これはブローカーが持っているこのクライアントのこれまでの情報を破棄することを意味します。
0x003cはキープアライブ・タイマーの値です。0x000fは次に続くユーザーネームの長さを示しています。“pc1461831517171”がユーザーネームです。
connectに対するAck 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------------------------------------------------------------------------- 0000 20 02 00 00 ...
これはブローカーからクライアントに送られるメッセージです。
0x20はMQTTのコネクト要求に対するAckであることを示しています。次の0x02はメッセージの長さを示します。
subscribe要求 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------------------------------------------------------------------------- 0000 82 06 00 03 00 01 23 00 ......#.
これはサブスクライバーがブローカーに送るリクエストメッセージです。
0x82はMQTTのsubscribe要求であることを示しています。次の0x06はメッセージの長さ、“ # ”はサブスクライブ要求したトピックを示します。この場合全てのトピックに対してサブスクライブ要求を行っています。
Copyright © ITmedia, Inc. All Rights Reserved.