MQTTで始めるIoTデバイスの作り方 第2回:MQTTのプロトコルを解析して挙動を理解するMQTTで始めるIoTデバイスづくり(2)(4/5 ページ)

» 2016年06月01日 07時00分 公開
[今岡通博MONOist]

 次にやりとりされた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.