bugfix> javascript > 投稿

Vaadinでブラウザを閉じる/タブを閉じるときにセッションを破棄する方法は? JavaScriptを使用してこれを処理できます。以下のコードを試しました: Page.getCurrent().getJavaScript().execute("window.onbeforeunload = function (e) { var e = e || window.event; closeMyApplication(); return; };"); 上記のスクリプトの問題は、ページの更新時にonbeforeunloadイベントが発生することです。また、モバイルデバイス(タッチデバイス)でこの状況をどのように処理しますか?

回答 1 件
  • closeIdleSessionsをtrueおよび短いハートビート間隔に設定することをお勧めします。これにより、Webブラウザーが閉じられた後、Vaadin内部セッションクリーンアップメカニズムがセッションをより速く破棄するようになります。

    それでも解決しない場合は、ヘルパーアドオンhttps://vaadin.com/directory/component/cleanupservlet-add-onもあります。

    コピー元 https://vaadin.com/docs/v8/framework/application/application-lifecycle.html

    セッションの有効期限

    セッションは、ユーザーがアプリケーションを操作したり、UIのハートビートを監視したりすることで発生するサーバーリクエストによって維持されます。すべてのUIの有効期限が切れても、セッションは残ります。 Webアプリケーションで設定されたセッションタイムアウトが期限切れになると、サーバーからクリーンアップされます。

    アプリケーションにアクティブなUIがある場合、それらのハートビートはセッションを無期限に維持します。セッションタイムアウト設定の本来の目的である、ユーザーが十分に長く非アクティブである場合、セッションタイムアウトを設定できます。 「web.xmlデプロイメント記述子の使用」で説明されているように、サーブレットのcloseIdleSessionsパラメーターがweb.xmlでtrueに設定されている場合、session-timeoutパラメーターで指定されたタイムアウト時にセッションとそのすべてのUIが閉じられますサーブレットは、最後の非ハートビート要求の後に期限切れになります。セッションが終了すると、ブラウザは次のサーバー要求で非同期エラーを表示します。いメッセージを回避するには、「システムメッセージのカスタマイズ」で説明されているように、UIのリダイレクトURLを設定することができます。

    関連する構成パラメータについては、「その他のサーブレット構成パラメータ」で説明しています。

    ユーザーセッションで説明されているように、SessionDestroyListenerを使用してサーバー側でセッションの有効期限を処理できます。

あなたの答え