Java Web服务器应用程序有什么方法可以推送?

时间:2010-06-02 12:23:36

标签: http java-ee client-server server-push

Web服务器响应传入的HTTP请求而工作...处理请求并返回HTTP响应。服务器是否有任何常见的方法可以将数据推送到此体系结构中的客户端...例如,请求来自client1,服务器想要通知client2?显然可以通过非网络服务器使用套接字来完成,但是一个必须支持页面请求并允许推送数据的网络服务器应用呢?

4 个答案:

答案 0 :(得分:1)

如果您不介意等待网络世界赶上这个崭露头角的标准,您可以使用支持JettyWeb Sockets等网络应用容器。然后,您将拥有真正的双向通信,而不是HTTP +轮询或特殊插件等。

答案 1 :(得分:1)

  

一个Web服务器应用程序,它必须支持页面请求并允许推送数据..?

Servlet 3.0引入了Async支持,允许编写Comet样式的应用程序(即使用长期HTTP连接的应用程序以及长轮询流式传输)。

如果您不能等待Servlet 3.0异步支持并且不想使用容器(如GlassFish,Jetty)的专有Comet或WebSocket支持,那么请查看Atmosphere

另见

答案 2 :(得分:0)

不,没有一些客户端技术(Flash,Silverlight,Applets等)

您可以让页面使用AJAX轮询服务器。

答案 3 :(得分:0)

另一种可能性是滥用HTTP Keep Alive来实现这一目标。有关背景信息,请参阅http://en.wikipedia.org/wiki/HTTP_persistent_connection。在您的方案中,您将client2启动与服务器的连接,然后保持打开状态以监听通知。

这不是一个很好的解决方案,首先你需要保持很多长期存在的TCP连接,如果连接丢失,服务器就无法重新连接。它必须等待客户回来。