MQTT クライアントの構成例
モバイルアプリや Thing を実装する際、MQTT プロトコルによる通信部分はオープンソースのライブラリなどを使って実装します。Kii の SDK では、MQTT による通信部分を SDK の外部で実現するように設計されています(例外的に、Thing-IF SDK を使用する場合のみ、MQTT プロトコルの通信制御ロジックを内蔵しています)。
利用可能なライブラリーの例は、例えば MQTT.org が公開している こちらのリスト を参照してください。
以下に MQTT クライアントの実装例を挙げます。これらは Kii Cloud と通信する場合の標準的な構成を示しています。
- Web アプリでプッシュ通知を利用する場合
- Node.js 上でプッシュ通知を利用する場合
- Thing-IF SDK/Thing SDK Embedded を利用する場合
- MQTT だけで Thing を構成する場合
Web アプリでプッシュ通知を利用する場合
このケースでは、プッシュ通知を利用するために、WebSocket 上の MQTT を利用します。
Kii Cloud へのリクエストは Kii Cloud SDK for JavaScript または Thing-IF SDK for JavaScript を使って行います。この際、SDK の内部で HTTPS による通信が行われます。
通常は SDK の機能だけで実装できますが、用途によっては HTTPS を利用して REST API を直接呼び出すこともできます。
Node.js 上でプッシュ通知を利用する場合
このケースでは、プッシュ通知を利用するために、TCP ソケット上の MQTT を利用します。
Kii Cloud へのリクエストは Kii Cloud SDK for JavaScript を使って行います。この際、SDK の内部で HTTPS による通信が行われます。
通常は SDK の機能だけで実装できますが、用途によっては HTTPS を利用して REST API を直接呼び出すこともできます。
Node.js は様々な環境で動作させることができますが、特に Thing 側の実装を行う際に有効です。Web アプリと同様、WebSocket を使ったプッシュ通知でも実装できますが、Web ブラウザーの外部では TCP ソケットを使う方が、よりシンプルな構成になります。
Thing-IF SDK/Thing SDK Embedded を利用する場合
このケースでは、Thing-IF の コマンド の受信処理でプッシュ通知の技術を利用するため、TCP ソケット上の MQTT を利用します。また、Thing SDK Embedded で直接プッシュ通知を使った実装を行う場合にも、TCP ソケット上の MQTT を利用します。
Kii Cloud へのリクエストは Thing-IF SDK/Thing SDK Embedded を使って行います。この際、SDK の内部で HTTPS による通信が行われます。
Thing-IF SDK/Thing SDK Embedded には MQTT クライアントの実装が含まれているため、外部ライブラリーを用意する必要はありません。ただし、移植性の保持のため、ネットワークへの接続処理はアプリ側で用意する必要があります(図では省略しています)。
Thing-IF SDK の内部で使用している Thing SDK Embedded では、REST API を直接呼び出す機能も用意しています。そのため、アプリの実装から、SDK を経由せずに REST API を呼び出す必要は基本的にありません。
MQTT だけで Thing を構成する場合
このケースでは、TCP ソケット上の MQTT を使って API の呼び出しとプッシュ通知の両方を実現します。
HTTPS を使用せず、MQTT だけで Thing を開発したい場合に使用します。この方式に対応している SDK はないため、実装時には SDK を使用せず、API を直接呼び出します。
MQTT プロトコルのコマンドや MQTT トピック名に応じて、プッシュ通知と Kii Cloud からのレスポンスを判別します。