Vaadin 14浏览器过度轮询:如何限制请求频率?
限制Vaadin 14长轮询请求频率的方法
由于你的JBoss 7.x不支持WebSocket,Vaadin自动降级为长轮询模式导致请求过于频繁,可通过以下方式调整:
调整Atmosphere核心参数
修改Vaadin推送配置,增大心跳间隔和长轮询超时时间来降低请求频率。在application.properties中添加:# 设置客户端心跳间隔为30秒 vaadin.push.atmosphere.pingInterval=30000 # 设置长轮询请求超时为60秒 vaadin.push.atmosphere.longPolling.timeout=60000这两个参数分别控制客户端主动发送心跳的间隔,以及单个长轮询请求保持连接的时长,调大后能显著减少请求次数。
尝试切换到流式传输模式
长轮询并非唯一备选推送模式,可强制Vaadin使用流式传输(streaming),这种模式下连接保持更久,请求频率更低。在application.properties中配置:vaadin.push.transport=streaming注意需确认JBoss 7.x支持该传输方式,部分旧容器可能存在兼容性问题。
优化应用内的推送逻辑
检查代码中是否存在频繁触发UI更新的逻辑,比如不必要的UI.push()调用、高频定时刷新等。将零散更新合并为批量操作,或延长定时任务执行间隔,从根源减少推送需求。直接配置Atmosphere Servlet参数
若通过Vaadin配置不生效,可在web.xml中直接设置Atmosphere的Servlet参数:<servlet> <servlet-name>VaadinServlet</servlet-name> <servlet-class>com.vaadin.flow.server.VaadinServlet</servlet-class> <init-param> <param-name>org.atmosphere.cpr.longPollingTimeout</param-name> <param-value>60000</param-value> </init-param> <init-param> <param-name>org.atmosphere.cpr.pingInterval</param-name> <param-value>30000</param-value> </init-param> </servlet>这种方式直接作用于Atmosphere框架,和Vaadin配置效果一致。
内容的提问来源于stack exchange,提问作者Luc De Kesel
相关产品推荐
相关产品推荐

