web-dev-qa-db-ja.com

ダイレクトMQTTとWebSocket上のMQTT

直接MQTTと比較したMQTT over WebSocketのメリットは何ですか?

プロジェクトでMQTTを使用することを検討しているので、直接MQTTではなくWebSocketではなくMQTTを選択する人がいる理由を知りたいです。

50

Webapps(ページ内)から直接メッセージをパブリッシュ/サブスクライブする場合にのみ、WebsocketでMQTTを実行する必要があります。

基本的には、すべてに対して純粋なMQTTを実行し、実際に必要な場合にのみwebsocketを追加します。

すべてのブラウザなし言語について、MQTTクライアントライブラリはネイティブMQTTのみを使用します。 Javascriptには、純粋なMQTTライブラリと、websocketを使用するページライブラリのPahoの両方があります。

編集:ファイアウォールトンネリングのユースケースは、Websocket経由でMQTTを使用する正当な理由です。

29
hardillb

Websocket経由でMQTTを使用する2つの主な理由(事実上、HTTP/HTTPSを経由することを意味します):

  • Webアプリ(ブラウザーで実行されるもの-JavaScriptで記述されたものなど)
  • 1883/8883ポートを使用せず、代わりにHTTP/HTTPSを経由する他のアプリケーション-これにより、ファイアウォール(企業ネットワークなど)によってブロックされる可能性が低くなります。ほとんどのファイアウォールはHTTPトラフィックを通過させるため

上記を必要としないか心配しない場合は、「直接」MQTTを使用します。

  • より効率的です
  • 「直接」MQTTで動作するさまざまな言語用のクライアントライブラリがさらにあります
18
user5762813

Websocket上のMQTTは、特定のWebページが送信側または受信側のMQTTクライアントである場合に最適です。

Websocketを介したMQTTの機能の概要は、 here にあります。

16

MQTTは、以下をサポートするプロトコルです。

  • パブリッシュ/サブスクライブメカニズムを提供します。
  • サービス品質ポリシー
  • 通信のオーバーヘッドを最小限に抑える
  • 狭帯域通信チャネル用に特別に設計された
    制約のあるデバイス。

デバイスによっては、実装が利用可能です。

ブラウザ:Websocketを使用します。 Websocketは、ブラウザに全二重通信を確立する機能を提供します。 MQTT機能を実装するJavaScriptライブラリがあります。 Eclipse Paho JavaScript Client を参照してください。

Android:これらは、Javaで記述されたMQTTクライアントライブラリです。 Eclipse Paho Android Service

そのため、この機能を使用するデバイスに依存します。標準と仕様については、 MQTTバージョン3.1.1 をご覧ください。

これが役に立てば幸いです。

乾杯!

14
Sachin Thapa

Webソケット上のMQTTは、443および80のトラフィックのみを許可するファイアウォールの背後でアプリケーションが実行されている場合にも役立ちます。また、ファイアウォールのポリシーを制御することはできません。

6
Vasif

Websocket上のMQTTを使用すると、すべてのブラウザーをMQTTデバイスにすることができます。

MQTTのパブリッシュ/サブスクライブパターンにより、正しいトピックにサブスクライブしている限り、イベント(文字どおり世界中のどこでも)が発生したときに、ブラウザーにリアルタイムでプッシュされます。

WebSocket上のMQTTの場合、websockets接続はMQTTプロトコルの外部パイプを形成します。サーバー/ブローカーはMQTTパケットをwebsocketsパケットに入れて、クライアント/サーバーに送信します。クライアント/サーバーは、websocketsパケットからMQTTパケットを解凍し、通常のMQTTパケットとして処理します。

enter image description here

さらに、モノのインターネットに大きな影響を与えます。詳細については、次のドキュメントをお読みください。

SAP Cloud Platform Internet of Things

AWS IoT

HiveMQを使用したWebsocket上のMQTT

4

MQTTブローカー:

MQTTクライアントの対応物はMQTTブローカーです。ブローカーは、すべてのパブリッシュ/サブスクライブプロトコルの中心にあります。実装に応じて、ブローカーは最大数千の同時接続MQTTクライアントを処理できます。

MQTT Client:クライアントについて話すとき、ほとんど常にMQTTクライアントを意味します。パブリッシャーとサブスクライバーの両方がMQTTクライアントです。パブリッシャーとサブスクライバーのラベルは、クライアントが現在メッセージをパブリッシュしているか、メッセージをサブスクライブしているかを示します(パブリッシュおよびサブスクライブ機能は同じMQTTクライアントに実装することもできます)。

WebSocket: MQTT Essentialsで、MQTTは制約のあるデバイスや信頼性の低いネットワークに最適であることを学びました。また、非常に低いオーバーヘッドでメッセージを送信するのにも最適です。携帯電話のブラウザで直接または一般にMQTTメッセージを直接送受信するのは非常に良いことです。これは、MQTT over WebSocketsによって可能です。

サードパーティのプロトコルを使用できます。 PAHO、EMQTT、VerneMQ。

0
kiran malvi