web-dev-qa-db-ja.com

常時ポーリングのバッテリー寿命の問題は、WebSocketを使用してソリューションを実装するための追加のロジック/時間を保証しますか?

Androidデバイス用のCordovaを使用したチャットアプリケーションを設計しています。研究を進めており、これを実行するには2つの方法がある可能性があるという結論に達しました。

  1. WebSocket。 WebSocketを使用すると、クライアントアプリケーションはメッセージをWebサーバーに送信でき、Webサーバーはデータベース内の受信者のIPアドレスを検索して、メッセージを受信者に送信できます。これにはサーバー上でより多くのロジックが必要になりますが、定期的なポーリングの必要性がなくなります。この方法では、ネットワークの変更を検出し、更新されたIPアドレスをWebサーバーに送信して、Webサーバーがメッセージの送信先を認識できるようにする、クライアント上の定数ループも必要です。
  2. 一定のポーリング。クライアントアプリケーションに、更新がないか常にWebサーバーをポーリングさせる。サーバーロジックが制限されるため、これが最も簡単な方法です。また、ユーザーがネットワークを切り替えた場合にアプリケーションでロジックを処理する必要もありません。ただし、一般的なコンセンサスは、定期的なポーリングを利用する設計には近づかないことです。これは、デバイスのバッテリー寿命が大幅に消耗するためです。

私の質問は、次のとおりです。継続的なポーリングのバッテリー寿命の問題は、WebSocketを使用したソリューションを実装するための追加のロジック/時間を必要としますか?

4
nullReference

Webソケットの方が適しています

継続的なポーリングの問題は、データの小さなバースト(かなりの量)を送信するのと同じように、デバイスがポーリング間から「ウェイクアップ」する必要がある「アイドル」状態になることです。初期接続の確立には高いコストがかかり、このコストは実行するポーリングごとに繰り返されます。そして、これは追加されます。応答性を維持するために数秒ごとにポーリングする必要があるチャットアプリケーションの場合、すぐにバッテリーを消耗します。

参照してください この答え Android.SE

とにかく、Webソケットはそれほど難しくありません。あなたを助けることができるたくさんのライブラリが世に出ており、あなたがあなたのために挙げた問題を処理します。

3
JDT