10

シナリオは、セッションの有効期限が切れようとしているときに、ユーザーが通知を受け取る必要があることです (たとえば、典型的な JS アラートまたはリダイレクトなどを介して)。これを行うことができるいくつかの方法は

  1. here で説明されているように、javascript タイムアウト機能を使用します。
  2. もちろん、HTML5サポートが必要なWebSocketを使用したサーバープッシュの使用。

これら2つのアプローチの相対的なメリット/デメリットは何ですか? これらとは別に、これを達成できる他の方法はありますか(いくつかの標準ライブラリなど)。私のバックエンドは Java EE (Struts+Spring) です。

4

2 に答える 2

9

javascriptタイムアウト関数を使用することにより、ユーザーがAJAX呼び出しを行っている場合、関数はユーザーアクティビティとして扱われるため、リセットされる必要があります。

使用しているサーバーがWebSocketを使用してプッシュしている場合、それほど最新ではないブラウザーを使用しているユーザーをターゲットにできない可能性があります。いくつかのシグナリングフレームワークを使用し、バックエンドスタックを変更する必要がある場合もあります。(私は今のところsocket.ioとSignalRを考えることができます)

どちらのアプローチも優雅に低下することはありません。したがって、IMO javascriptオプションは、より多くのオーディエンスをターゲットにできるため、より適切に聞こえます。そのため、いくつかのエッジケースシナリオに対処する必要があります。選択肢があれば、この機能はまったく実装しません。しかし、それはほとんどそのようには起こりません。

更新: これが私が考えることができる別のアプローチです。

ページが提供されるたびに、クライアント側でアクセスできるCookieを送信しました。このCookieには、セッションがタイムアウトするUTC時刻が含まれています。私のコードでは、値を読み取り、現地時間をUTCと比較するsetIntervalを配置し、それが閉じると、タイムアウトがX秒で発生することなどを示すポップアップウィンドウを表示します。

これも正常に低下することはなく、クライアントマシンの時間に依存します。したがって、それが間違っていると、この機能は確実に機能しません。

于 2012-04-06T08:50:50.463 に答える