ユーザーが現在GoogleAppEngineアプリケーションにログインしているかどうかを確認するにはどうすればよいですか?
このアプリケーションを使用すると、ユーザーは他のユーザーのプロファイルを参照できます。表示されたプロファイルがアプリケーションを使用しているか、アプリケーションにログインしている場合、表示されたプロファイルがオンラインであるという通知が必要です。
この要件を達成する方法は?
ユーザーが現在GoogleAppEngineアプリケーションにログインしているかどうかを確認するにはどうすればよいですか?
このアプリケーションを使用すると、ユーザーは他のユーザーのプロファイルを参照できます。表示されたプロファイルがアプリケーションを使用しているか、アプリケーションにログインしている場合、表示されたプロファイルがオンラインであるという通知が必要です。
この要件を達成する方法は?
ユーザープロファイルを管理している場合は、ユーザーがいつログインするかがわかります。ログインプロセスの最後に、ユーザーのログイン情報をmemcacheに保存するだけです。後で、memcacheでユーザーを検索するだけで、ユーザーがログインしているかどうかを確認できます。
この方法では、接続イベントを簡単にキャッチして追跡できますが、リストを最新の状態にするには、ユーザーが切断したときにも対応する必要があります。これを実現するために、チャネルを使用できます。Googleのドキュメントを参照してください。
Gaël が示唆しているように、Channel APIを使用してこれを追跡することもできますが、それはおそらくやり過ぎです。そのルートに行きたい場合は、接続されたメッセージと切断されたメッセージをリッスンし、ユーザーがサインインしていることを示すデータベースのフィールドを更新します。
より安価なルートは、「このユーザーが最後にページを要求した時間」のようなユーザー レコードのフィールドを更新することです。ユーザーが最後にページを要求してからn分以上経過している場合は、サインアウトしていると想定します。実際、ユーザー ID から最終アクセス時刻までのマップを使用して memcache でこれを行うこともできます。
要するに、「サインイン」情報をどうしたいかということです。ユーザーが近くにいるかどうか、またはオンラインのユーザー数を大まかに把握したいだけの場合は、データストアまたは memcache ソリューションを使用するのがおそらく適切です。一方、ユーザーの存在を反映して、たとえば応答できるようにしたい場合。IM の場合は、すぐにメッセージを配信できるように、とにかく Channel API が必要になるでしょう。