Как уничтожить сессию Vaadin при закрытии браузера или закрытии вкладки? - PullRequest
0 голосов
/ 25 мая 2018

Как уничтожить сессию при закрытии браузера / закрытии вкладки в Vaadin?Мы можем использовать JavaScript, чтобы справиться с этим.Я попробовал следующий код: Page.getCurrent().getJavaScript().execute("window.onbeforeunload = function (e) { var e = e || window.event; closeMyApplication(); return; };"); Проблема с вышеописанным скриптом, он будет запускать событие перед загрузкой также при обновлении страницы.А также, как справиться с этой ситуацией на мобильных устройствах (сенсорных устройствах)?

1 Ответ

0 голосов
/ 25 мая 2018

Я рекомендую установить для closeIdleSessions значение true и короткий интервал сердечных сокращений, что должно заставить механизм очистки внутренних сеансов Vaadin быстрее уничтожать сеансы после закрытия веб-браузера.

Если это не помогает, существуеттакже вспомогательное дополнение https://vaadin.com/directory/component/cleanupservlet-add-on

Копирование из https://vaadin.com/docs/v8/framework/application/application-lifecycle.html

Срок действия сеанса

Сеанс поддерживается активным по запросам сервера, вызванным пользователемвзаимодействие с приложением, а также мониторинг пульса UI.После истечения срока действия всех пользовательских интерфейсов сеанс все еще остается.Он очищается от сервера, когда истекает время ожидания сеанса, настроенное в веб-приложении.

Если в приложении имеются активные пользовательские интерфейсы, их пульс поддерживает сеанс на неопределенный срок.Вы можете захотеть установить тайм-аут сеансов, если пользователь достаточно долго неактивен, что является первоначальной целью настройки тайм-аута сеанса.Если для параметра closeIdleSessions сервлета задано значение true в файле web.xml, как описано в разделе «Использование дескриптора развертывания web.xml», сеанс и все его пользовательские интерфейсы закрываются по истечении времени ожидания, заданного параметром session-timeoutсрок действия сервлета истекает после последнего запроса без пульса.После завершения сеанса браузер отобразит ошибку Out Of Sync при следующем запросе к серверу.Чтобы избежать появления уродливого сообщения, вы можете установить URL-адрес перенаправления для пользовательских интерфейсов, как описано в разделе «Настройка системных сообщений».

Соответствующие параметры конфигурации описаны в разделе «Другие параметры конфигурации сервлета».

Вы можете обработать истечение срока сеанса на стороне сервера с помощью SessionDestroyListener, как описано в разделе «Сеанс пользователя».

...