gpt4 book ai didi

session - Vaadin session setMaxInactiveInterval UI 响应不一致

转载 作者:行者123 更新时间:2023-12-04 01:05:28 26 4
gpt4 key购买 nike

我已将 Vaadin session 的最大非事件间隔设置如下。

VaadinSession.getCurrent().getSession().setMaxInactiveInterval(60); 

添加了一个 session 销毁监听器,如下所示以进行测试。
    servletService.addSessionDestroyListener(new SessionDestroyListener() {
public void sessionDestroy(SessionDestroyEvent event) {
System.out.println("SESSION TIMEOUT");
}
});

在服务器端所需的时间调用此监听器。
但是,我无法同时在浏览器端看到“ session 已过期”消息。通常它会在第 4 到第 5 分钟之间显示。
有没有办法以一致的方式同时获得这两者。

另请注意,我们没有使用推送,目前它不是我们的选择。

如果轮询间隔小于 maxInactiveInterval,进行客户端轮询将重置 session 的上次事件时间,并且可以使 session 永远保持事件状态。

最佳答案

Vaadin 应用程序在 session 生命周期中保持客户端和服务器端的通信。有参数调用心跳间隔默认值 5 分钟(300 秒) .所以这意味着每 5 分钟客户端询问服务器 session 是否还活着。这就是为什么当 session 被销毁时,您会在控制台中看到消息,并且只有在一段时间后您才会在浏览器中看到 session 已过期消息。

您可以更改 心跳间隔属性并设置较小的值(以秒为单位),但请记住,您需要设置 closeIdleSessions=true 也明确。在下面的示例中,我将此值设置为 1 秒。

@VaadinServletConfiguration(heartbeatInterval=1, closeIdleSessions=true, productionMode = false, ui = MyUI.class)
public static class Servlet extends VaadinServlet {
}

关于session - Vaadin session setMaxInactiveInterval UI 响应不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com