3

アプリとサーバー間でデータを交換できるようにしたいのですが、それぞれの側がデータの送信を開始できる必要があります。私はそれが迅速に行われることを望んでおり、新しいメッセージのクライアント側からのポーリングは私の場合は十分に速くありません。プッシュテクノロジーはどのように機能しますか?

デバイスからサーバーへの開いたソケット接続を維持し、カスタム形式で受信生バイトを送信することを考えていました。それは良いアプローチですか、そして私はどのような問題に遭遇する可能性がありますか?代替案として何を提案しますか?

4

2 に答える 2

1

プッシュ技術は大まかにコメットと呼ばれています。基本的なロジックは、サーバーとの永続的なHTTP接続を開くことです(多くの場合、HTTPストリーミングと呼ばれます)。この接続は永久に続くわけではないため(デフォルトではサーバーの制限により)、接続を再開できるはずです。特にアンドロイドでそれを行う方法はわかりませんが、これは可能であるはずです。

この背後にある基本的な概念は、このブログ投稿で説明されています

これは概念であるため、任意のサーバー側プログラミング言語で実装できます。このチュートリアルでは、PHPでCOMETを実装する方法について公正に紹介します。javascriptに慣れている場合は、socket.ioもそのようなライブラリです。このSOFスレッドは、いくつかの便利なリンクを提供します。

長所と短所に来て、

  1. ほぼ瞬時に更新したい場合は、COMETが最適です。
  2. 一度にサーバーへの接続数に制限がある場合、COMETはおそらくトレードオフに基づいて検討する必要があります。
于 2013-01-01T17:08:26.343 に答える
1

メッセージパッシングに関しては、サーバーとクライアント間の新しい接続を初期化するために必要な時間は、通常、データ自体を送信するために必要な時間をはるかに上回ります-少なくとも単純なステータスのようなメッセージの場合。これにより、通信遅延が大幅に増加します。これが主な懸念事項のようです。

この問題に対処するには、主に2つの方法があります。

  • 両端間の接続を常に開いたままにします。これは、この問題に対処するための標準的な方法です。プログラミングが簡単であるという利点ありますが、接続を開いたままにするには、stay-aliveパケットを定期的に使用する必要があります。これにより、モバイルデバイスのバッテリー寿命が短くなり、ネットワークコストがわずかに増加する可能性があります。また、モバイルデバイスの電源管理機能と不利に相互作用する可能性があります。

    さらに、何をしても、不便な時間に新しい接続を確立する必要がある可能性を完全に排除することはできません-ほとんどアイドル状態の接続は、今日のネットワークインフラストラクチャではうまく機能しません...

  • UDPなどのコネクションレス型プロトコルを使用する:このソリューションは、通信と電力のコストを最小限に抑える可能性がありますが、サーバーとクライアントがそのようなプロトコルに固有の信頼性の欠如を処理するように設計されている必要があります。

とは言うものの、カスタム形式が実際に大幅な節約につながることがいくつかのプロファイリングで実証されるまで、データの実際の形式を大きな懸念事項とは見なしません。開発段階では、既成のネットワーク監視および分析ソフトウェアを使用する機能がはるかに重要であると考えています...

于 2013-01-01T17:13:39.283 に答える