2015-11-27 83 views
0

我的应用程序中有一个投递报告页面。我的客户总是有兴趣知道货物交付的最新状态。自动更新网页

我需要添加'自动刷新'功能,以便客户无需手动刷新即可获取最新状态。这个需求面临的挑战是数百个请求将开始触发服务器,而只有非常小的%会在交付状态中进行一些更新。 我对在数分钟内在我的应用程序服务器上进行数百次[未来可能会增长]无关紧要的命中感兴趣。

解决方案试图满足要求: 我使用的WebSocket,这是我非群集环境都不错,但在集群也开始Wildfly集群架构挑战失败的原因[AJP不会得到升级]

解决方案我打算实施: 我可以将文件中的最新传递状态推送到我的网络服务器,并让浏览器的请求使用静态文件。在这种情况下,我的应用程序服务器不需要处理所有这些不相关的请求。

问题: 有没有其他更好的解决方案来处理这个问题?

其他景点:

我使用的Ehcache来处理缓存我的应用程序。在服务器节点之间存在这些缓存对象的复制。所以这个缓存我可以使用incase需要共享服务器节点之间的一些数据。

这是一个JSF-Spring集成应用程序。

我使用Richface的a4j:websocket的push组件,它不是野蝇簇中的合适解决方案。

回答

0

您是否尝试过寻找PrimeFaces的poll组件?

UPDATE:基于下面的评论,我想你需要的是COMET(或反向AJAX的任何工具)

+0

看来投票组件能够做一个指定的时间间隔定期请求。这又会导致应用服务器的命中太多。感谢您的评论。 – Sam

+0

@Sam我用COMET的信息更新了答案。请检查是否有帮助 – Optional

+0

https://en.wikipedia.org/wiki/WebSocket“在WebSocket之前,使用Comet通道可以实现端口80全双工通信;但是,Comet实现并不重要,并且由于TCP握手和HTTP头部开销,对于小型消息来说效率不高,WebSocket协议旨在解决这些问题而不影响网络的安全假设。 COMET将会是一个沉重的解决方案吗?我会对此做更多的研究。 – Sam