2016-10-25 4 views
0

MQTTサーバーを使用しているときに私の頭に疑問が浮かんできましたが、私の場合はProtobuf +MQTTがWebSocket + protobufよりもバッテリーを使用しない理由(またはそれはありません)

私はインスタントメッセージングプラットフォームを作成しています...クライアントとサーバーとデータベースとクライアントB。

送信される情報:会話IDとメッセージ。

+0

あなたは完全な答えを出すのに十分なコンテキストを提供していませんが、私は試してみます。 – hardillb

答えて

0

WebSocket接続を開始するために、最初のGET要求にHTTPヘッダーのサイズを、次にサーバーにUPGRADE要求を含めると、ネットワークトラフィック全体は通常MQTT接続を開き、トピック

ネットワーク経由でデータを送信すると、バッテリを介してやり取りする無線が使用されるため、より多くのデータを送信するほど、より多くのバッテリを消費します。 MQTTでは、送受信されるデータの多くが実際のペイロードであり、プロトコルに関連する余分なデータではありません。

より多くのデータが送受信されるため、初期ハンドシェイクによる違いはさらに安定した接続になりますが、4Gから移動するにつれて頻繁にネットワーク接続を切断する傾向があるモバイルアプリケーションの場合は必ずしもそうとは限りませんセルサイト間を移動するときやモバイルデータとWiFiを切り替えるときに3Gに移行する。

WebSocketはHTTPの長いポーリングよりも優れていますが、接続の開始時に大きな初期ネットワークヒットがまだあります。

+0

はmqttがプレーンテキストとして転送されますか? –

+0

SSLを介してMQTTを実行できます。 SSLハンドシェイクは、両方で同じになります – hardillb

0

HTTP =オーバー圧縮/いるProtobuf => OK

WebSocketを持つHTTP経由圧縮/いるProtobuf =>最高

MQTT =>良い

WebSocketを持つMQTT>そこそこ

のみクライアント側でJavaScriptのようなものを使用している場合や、HTTP経由で(例えば、より簡単にファイアウォールを通過させたい場合)、WebSocketを使用してください。

関連する問題