2017-06-25 8 views
2

私は、アプリのコンピュータ版に接続するアンドロイドアプリを持っています。コンピュータ版では、待ち行列に人のリストが格納されています。それはかなり待っているラインマネージャーです。新しい人々は人々に来るインライン変数は1つに増え、人々は人々に出るインラインは1つに減少する。特定のPCアプリケーションのすべてのアンドロイドクライアントにメッセージを送信

私の目標は、peopleInLineが変更されるたびにアプリのすべてのユーザーを更新することです。

現在、コンピュータのバージョンに接続しているユーザーのみが更新プログラムを受信します。

私は考える:

データベースにpeopleInLineフィールドを追加し、peopleInLineが変化したときに、コンピュータのバージョンは、それを更新します。クライアントが行って毎秒peopleInLineフィールドをチェックして何か変更があるかどうかを確認します。

それとも

(私はソケットを使用しています)、クライアントとサーバー間の接続を維持し、peopleInLineが変更されるたびに、サーバーがソケットを介して送信します。

問題は、サーバーがストアの従業員によって管理されるストア内にあるコンピュータにあることです。私は、第二の解決策は、何百万人もの人々が同時に接続されていると仮定して、コンピュータに多くのプレッシャーをかけることができると思います。

答えて

0

クライアントとサーバー間の同期を維持する最も良い方法は、ソケットを使用することです。すべてのクライアントをマルチキャストアドレスに参加させることができます。サーバが状態を変更すると、マルチキャストアドレスにメッセージが送信され、すべてのクライアントがメッセージを受信します。

ソケットを使用したくない場合は、サーバーにREST APIを実装し、クライアント上でスレッドを定期的に実行して(10秒間)、サーバーが変更されたかどうかを確認できます。 (これは非常に素朴な解決策です)

その他の解決方法は、サーバーのステータスが変更されたことをアプリに通知するための別のサービスを使用することです。 (例えば、GoogleのFirebase)

幸運

+0

[OK]を...おかげで...そう、それは待ちラインマネージャーのエンドポイントサーバーを作成するナイーブソリューションでしょうか?待機系のマネージャは店舗のコンピュータにあり、そのコンピュータは従業員によって使用されると仮定します。 –

+0

マルチキャストは、携帯電話でアプリを使用する何百万人ものユーザーのそれぞれに対して、コンピュータストアから直接高いレベルで送信されます –

関連する問題