Пульс используется для закрытия других пользовательских интерфейсов в сеансе, это не поможет при закрытии последнего пользовательского интерфейса.
Когда VaadinService
завершил обработку запроса, он вызывает VaadinService#cleanupSession
. Это перебирает все пользовательские интерфейсы в сеансе и проверяет, превышает ли время, прошедшее с момента последнего тактового импульса, три интервала тактовых импульсов, и в этом случае пользовательский интерфейс закрывается. Смысл этого состоит в том, чтобы очистить неактивные пользовательские интерфейсы в сеансе, например, от закрытых вкладок или обновленных windows.
Когда вы закрываете последнюю вкладку, сервер больше не будет получать запросы для этого сеанса. Поскольку код очистки запускается в конце запроса, он больше не будет запускаться. Это предотвращает закрытие вашего последнего пользовательского интерфейса.
Вместо этого в игру вступает тайм-аут сеанса. Вы можете настроить его с помощью server.servlet.session.timeout
, например 120s
или 2m
. Во встроенном Tomcat есть поток жнецов, который запускается раз в минуту, и он закрывает все неактивные сеансы. Обратите внимание, что в Spring минимальное значение для тайм-аута сеанса составляет одну минуту.
Если пользовательский интерфейс оставлен открытым, но бездействующим, тактовые импульсы будут поддерживать сеанс активным и предотвращать закрытие формы обработчиком тайм-аута сеанса. Здесь closeIdleSessions
вступает в игру. Если для него задано значение true, после завершения запроса Vaadin проверит последнюю метку времени запроса без сердцебиения, а если превышено время ожидания сеанса, он будет закрыт Vaadin.
Итак, вкратце
heartbeatInterval
контролирует, как быстро закрываются другие неактивные пользовательские интерфейсы в сеансе, но не влияет на последний пользовательский интерфейс.
closeIdleSessions
контролирует, должны ли тактовые импульсы предотвращать тайм-аут сеанса для пользовательский интерфейс в противном случае.
Примечание : после изменения значений в application.properties
может потребоваться окно в режиме инкогнито для проверки ваших изменений, так как последний сеанс мог быть сериализован и повторно используется после перезагрузки.