概要
MQTTを使った開発をやる前にざっくりエッセンシャルな所を調べてみたよ、なメモ
MQTT?
TCP/IPのアプリケーション層に該当する軽量プロトコルで特徴としては
- 軽量(ヘッダー最小2byte)
- 双方向通信
- TLS/SSL対応 (mqtts)
- Pub/Sub型通信
- Qos指定ができる(0~2)
- BrokerがPublisherとSubscriberの中間に配置されてメッセージ配信を行う(中央集権型)
- Retain(再接続時に接続が切れていた分を送信)/Will(切断時に切断されたメッセージを送る)
などがあり、上記の軽量・双方向通信可能な所から通信のオーバーヘッドが少ない、
消費電力が少なくても済む等、IoTの用途にあった通信方式と言われている。
商用利用の事例としてはFacebookMessagerなどがあげられる。
MQTT Essentials
MQTTはコマンドとペイロードで構成される。
代表的なコマンドを書いてみる。
コマンド
- CONNECT
接続確立
- SUBSCRIBE
トピックのサブスクライブすることを送信
- UNSUBSCRIBE
トピックのサブスクライブを解除
- PUBLISH
トピックにPUBLISHメッセージを配信
ブローカーを介して各サブスクライバに転送が行われる。
ペイロード
- ペイロードについては特に細かい取り決め・フォーマットがない。(アプリケーション側の解釈に委ねる)
- 256MBまで
Retain
トピックごとにメッセージを保持しておくことで
クライアントの接続が切れていた場合に再接続時に送信を行う。
Will
事前に接続しておいたトピックに切断時にメッセージを送る機構。
異常終了の検知・フォローのトリガーが主なユースケース。