0

ユーザーは、Google、Facebook、またはTwitterアカウントを使用して、GoogleAppEngineで実行されているサイトにログインできます。ユーザーのセッションはすでに実装されており、3つの認証プロバイダー(Google、Facebook、Twitter)はすでに機能しています。

次のタスクは、プロファイルが表示されたときにユーザーがオンラインであるかどうかを確認することです。これを実装する方法は?何かアイデアがあれば教えてください。

さらに、ユーザーがサイトにログインすると、次のようなセッションにメールを保存しました。

session.put("email", email);

考慮すべきもう1つのことは、ユーザーのセッションがタイムアウトしたときです。ユーザーのセッションが(サイトで提供されているログアウトメニュー/ボタンを使用せずに)自動的にタイムアウトになり、サイトで長期間操作を行わなかった場合、何かを行うことができますか?

使用されるフレームワークは、GoogleAppEngineで実行されるStruts2です。

ありがとう。

4

1 に答える 1

1

HTTPはセッションベースではなくリクエストベースであるため、ユーザーが「オンライン」であるかどうかを知る方法はありません。簡単に言えば、HTTPには「オンライン」ユーザーの概念がありません。

これを行うための非常に複雑でオーバーヘッドの高い方法は、Channel APIのようなものを使用して、ユーザーがページ(またはサイト)を離れたときに通知することですが、これは単純な機能にとっては多くのオーバーヘッドです。また、ページを開いているときにユーザーのブラウザに定期的にpingを送信させることもできますが、これも多くのオーバーヘッドと余分なトラフィックを引き起こします。

より一般的な方法は、ユーザーに対するレコードをデータストアに(または、ユーザーが誤ってオフラインとしてマークされている場合はそれほど重要ではない場合はmemcacheに)保存し、最後にページを読み込んだときに記録し、フェッチするたびに更新することです。サイトのページ。次に、ユーザーが妥当な時間間隔(たとえば、30分)内にページを取得した場合は「オンライン」として表示し、そうでない場合は「オフライン」として表示します。

于 2012-06-26T03:37:01.377 に答える