在Java WebApp中推送近实时数据

时间:2015-02-07 07:59:22

标签: java performance web-applications push-notification push

这个java Web应用程序有很多用户。这些用户根据其面板中显示的数据下达一些订单。通过调用外部服务(通过Web服务等)逐秒更新数据。我们获取此数据的那一刻,用户'必须立即更新面板以确保用户放置有效订单。

因此我们需要将数据推送到客户端WebApp。性能和可靠性非常值得关注。 你在这里建议采用什么方法或技术?我应该使用像彗星这样的东西吗?或者使用原始的WebSockets适合吗?

2 个答案:

答案 0 :(得分:1)

Websocket是最快的传输方式,但它不受支持(旧版本的Internet Explorer)。

AJAX请求并不那么快(因为浏览器可能会建立新的HTTP连接,而HTTP标头也会引入开销),但支持得更好。并且使用正确的保持活动设置,应该重用HTTP连接。

您可以使用一些通用实现,如sock.js(Spring框架支持)。它会自动选择最佳的运输方式。但它引入了额外的复杂层。

答案 1 :(得分:1)

有很多事情需要考虑。

有各种技术。你提到了彗星。还有Web套接字。如果没有协议级别的支持,您将无法对数据进行大量轮询。这是Comet采用的方法。

Web套接字专为此而设计。它的开销远远低于基于TCP或UDP的消息流。

您是定位现代浏览器还是需要支持旧浏览器?

对协议有不同的支持,不同版本,实现可能有一些警告等等。

  

或者是使用原始的WebSockets吗?

完全可以接受。虽然您必须处理与浏览器差异的差异,或者您可能发现在Web服务器上移植Web套接字可能需要一些工作。

例如,如果要在Jetty上部署(并本地使用其API),则需要实现WebSocketCreator。如果您本机使用Grizzly,则需要实现WebSocketListener等等。

Atmosphere尝试通过提供可在各种服务器上运行的统一接口来解决此问题。同样,一旦你选择了这样一个库,如果你以后想要一个不同的库,你将需要进行更改。

或者您可以使用像Pusher或其任何竞争对手这样的服务。

如果你是谷歌,你应该能够找到很多例子。

希望它有所帮助。