在vaadin应用程序中,我知道客户端javascript向服务器发送心跳,我可以通过在web.xml中添加以下内容来配置间隔
<context-param>
<param-name>heartbeatInterval</param-name>
<param-value>5</param-value>
</context-param>
我认为服务器还会向客户端发送心跳,因为如果服务器遇到断点并在断点上等待一段时间,则客户端会显示会话已过期。
与客户端到服务器心跳的心跳间隔相比,是否可以为服务器指定不同的心跳间隔?
此外,documentation表示如果错过3次心跳,服务器将关闭UI。是否可以更改此最大心跳未命中数?
(有人可能认为通过增加心跳间隔可以达到增加最大心跳计数的相同效果。但是,我在我的应用程序中将客户端心跳用于其他目的,因此增加心跳间隔不是一个选项。我)
答案 0 :(得分:1)
除非您启用描述here的服务器推送,否则Vaadin实际上不会从服务器向客户端发送请求。 但是,您应该在下面考虑具有稳定的会话和稳定的UI上下文。来自Vaadin documentation:
会话超时应该超过心跳间隔或 否则会话会在心跳保持之前关闭 活。当会话到期时,UI处于它们所处的状态 假设会话仍然存在,这将导致不同步 浏览器中的错误通知。
但是,心跳间隔比会话超时短, 这是正常情况,可以防止会话过期。如果 启用了servlet的closeIdleSessions参数(禁用 默认情况下,Vaadin关闭UI和会话后的时间 session-timeout参数中指定的值在最后一个之后到期 非心跳请求。