MQTTとWeb Socketsの主な違いは何ですか?
ホームオートメーションにIoTを使用する場合-さまざまなデバイスでアクセスを制御および監視します。RestAPIベースおよびブラウザーベースのアクセシビリティが必要な場合は、どちらを使用する必要があります。
Raspberry Pi 2 B +でJava(Pi4Jライブラリ)を使用しています。
明暗、湿度、PIDなどのいくつかのセンサーのセットアップがあります。
また、必要に応じてデータを送信できるクラウドサーバーもあります。
MQTTとWeb Socketsの主な違いは何ですか?
ホームオートメーションにIoTを使用する場合-さまざまなデバイスでアクセスを制御および監視します。RestAPIベースおよびブラウザーベースのアクセシビリティが必要な場合は、どちらを使用する必要があります。
Raspberry Pi 2 B +でJava(Pi4Jライブラリ)を使用しています。
明暗、湿度、PIDなどのいくつかのセンサーのセットアップがあります。
また、必要に応じてデータを送信できるクラウドサーバーもあります。
回答:
ここでの質問の設定は、実際にはこれらのプロトコルをまったく比較できないため、少し誤解を招く可能性があります。それらはTCPとIPのようなものであり、互いの上の層です。[1]
Websocketは、同じレベルにある「競合」RESTful httpでは提供されないものを提供する低レベルのプロトコルです。リクエストごとに開閉する必要のない常に開いているチャネルです。[2]
MQTTは、データを公開またはサブスクライブするための軽量な方法を提供します。混乱は、それらのサブスクリプションが何らかのチャネルであるということかもしれませんが、それは異なるタイプのチャネルです。MQTTで常時オープン接続を確立するには、WebsocketとMQTTが同時に必要です。
IoTでは、どのデザインでも、ストリームが必要かどうか(WebSocketsとRESTful)を選択する必要があり、MQTTについては、アプリでサブスクリプションと公開メカニズムが必要かどうかを考える必要があります。
状況によっては、一般的なことがあれば、MQTT over WebSocketsを検討することもできます。[3]
質問への回答:
あなたは、Rasperry Piのセットアップと場所の周りにいくつかのセンサーがあると言います。センサーが独自のコントローラーを備えたRasperryから遠く離れている場合、MQTTを使用してデータを収集できます。データをクラウドに保存するには、データをHTTPで送信します。クラウドでは、休息を通じてデータを提供します。[4]
WebSocketの場合、必要はありませんが、便利な場合は使用してください。
ソース:
[2] https://www.pubnub.com/blog/2015-01-05-websockets-vs-rest-api-understanding-the-difference/
[3] /programming/30624897/direct-mqtt-vs-mqtt-over-websocket
[4] http://www.theinternetofthings.eu/antonio-grasso-mqtt-vs-http-what-best-protocol-iot
どちらも、サーバーがクライアントにデータをポーリングすることなく(HTTPの場合のように)データをすぐにクライアントに渡すことができるように、全二重通信を可能にする点で同等です。
ただし、Websocketsは、クライアントとサーバー間の単純なポイントツーポイント接続用に設計されています。MQTTは、基本的なメッセージ送信の上に追加の抽象化を階層化するため、複数の関係者が興味のあるメッセージをサブスクライブできます。したがって、メッセージは「メッセージトピック」によってルーティングできるため、多くのクライアントが概念キューを共有できます。サーバーは、すべてのクライアントからのすべてのメッセージを聞くことを選択できますが、トピックでフィルタリングすることもできます。
MQTTには、サブスクライバーがメッセージをすぐに受信できるように保持されるメッセージや、クライアントが異常切断した場合に自動的に送信できるメッセージであるLWT(Last Will and Testament)など、その他のさまざまな便利な機能があります。要約すると、MQTTは単純なWebsocketにはない機能と抽象化を提供する「スタックの上位」です。