【问题标题】:Vaadin server side heartbeatsVaadin 服务器端心跳
【发布时间】:2016-01-28 03:02:43
【问题描述】:

在 vaadin 应用程序中,我知道客户端 javascript 向服务器发送心跳,我可以通过在 web.xml 中添加以下内容来配置间隔

<context-param>
    <param-name>heartbeatInterval</param-name>
    <param-value>5</param-value>
</context-param>

我认为服务器也会向客户端发送心跳,因为如果服务器遇到断点并在断点处等待一段时间,客户端会显示会话已过期。

与客户端到服务器心跳的心跳间隔相比,是否可以为服务器到客户端心跳指定不同的心跳间隔?

另外,documentation 表示如果错过了 3 个心跳,服务器将关闭 UI。是否可以更改此最大心跳未命中计数?

(有人可能认为通过增加心跳间隔可以实现增加最大心跳计数的相同效果。但是,我在我的应用程序中将客户端心跳用于其他目的,因此增加心跳间隔不是一个选项我)

【问题讨论】:

    标签: java vaadin


    【解决方案1】:

    Vaadin 实际上不会从服务器向客户端发送请求,除非您启用了here 中描述的服务器推送。 但是,您应该在下面考虑拥有稳定的会话和稳定的 UI 上下文。来自 Vaadin documentation:

    会话超时应长于心跳间隔或 否则会话在心跳可以保持之前关闭 活。由于会话到期使 UI 处于它们的状态 假设会话仍然存在,这将导致不同步 浏览器中的错误通知。

    但是,心跳间隔比会话超时更短, 这是正常情况,可防止会话过期。如果 servlet 的 closeIdleSessions 参数已启用(由 默认),Vaadin 会在该时间后关闭 UI 和会话 session-timeout 参数中指定的最后一个过期时间 非心跳请求。

    【讨论】:

    • 您觉得这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多