Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Java web服务器应用程序有任何推送方式吗?_Http_Jakarta Ee_Client Server_Server Push - Fatal编程技术网

Http Java web服务器应用程序有任何推送方式吗?

Http Java web服务器应用程序有任何推送方式吗?,http,jakarta-ee,client-server,server-push,Http,Jakarta Ee,Client Server,Server Push,Web服务器响应传入的HTTP请求。。。处理请求并返回HTTP响应。在这种体系结构中,服务器是否有向客户端推送数据的常见方法。。。e、 g请求来自client1,服务器想要通知client2?这显然可以由非web服务器使用套接字来完成,但web服务器应用程序又如何呢?它必须支持页面请求并允许推送数据。不,没有一些客户端技术(Flash、Silverlight、小程序等) 不过,您可以让页面使用AJAX轮询服务器。如果您不介意等待web世界赶上这一新兴标准,您可以使用web应用程序容器,比如支持哪

Web服务器响应传入的HTTP请求。。。处理请求并返回HTTP响应。在这种体系结构中,服务器是否有向客户端推送数据的常见方法。。。e、 g请求来自client1,服务器想要通知client2?这显然可以由非web服务器使用套接字来完成,但web服务器应用程序又如何呢?它必须支持页面请求并允许推送数据。

不,没有一些客户端技术(Flash、Silverlight、小程序等)


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

如果您不介意等待web世界赶上这一新兴标准,您可以使用web应用程序容器,比如支持哪种。然后,您将拥有真正的双向通信,而不是HTTP+轮询或特殊插件等

那么一个必须支持页面请求并允许推送数据的web服务器应用程序呢

Servlet 3.0引入了异步支持,允许编写Comet风格的应用程序(即使用长寿命HTTP连接和长轮询或流式处理的应用程序)

如果您迫不及待地等待Servlet3.0异步支持,并且不想使用容器(如GlassFish、Jetty)提供的专有Comet或WebSocket支持,那么请看一看

另见

另一种可能是滥用HTTP Keep Alive来实现这一点。有关背景信息,请参阅。在您的场景中,您需要
client2
启动到服务器的连接,然后该连接将保持打开状态以侦听通知


这不是一个很好的解决方案,首先,您需要保持大量长寿命的TCP连接,如果连接丢失,服务器将无法重新连接。它必须等待客户端返回。

轮询是显而易见的答案,但如果每个客户端持续发送“他们有什么应该告诉我的更新吗?”请求,那么性能会受到多大的影响?@John-无法回答这个问题。这完全取决于您的投票频率、您有多少客户机以及处理每个请求的成本。它必须是根据应用程序的使用经验随时间调整的内容。听起来很酷,但有浏览器支持它吗?以及Jetty?Chrome以外的其他web服务器支持它。我想Firefox是的。IE可以通过一个简单的Flash代理来支持它(比AJAX和各种Comet技巧更简单)。服务器端,我不知道。Tomcat不支持它,但因为我使用Geronimo+Jetty,所以我不在乎。WebSocket不是专有的。它们是标准轨道。@justmycorrectopine:Jetty API是专有的,Resin API是专有的。因此,正如我所写,容器支持是专有的。这就是为什么会有大气。嘿,大气看起来很有趣。@JUST:你错过了一点:Java EE API中没有定义Java对WebSocket的支持。因此,您依赖于所使用的容器。然而,它确实是W3CHTML5标准。是的,我在阅读了Pascal的回复后发现了@BalusC。支持是专有的,而不是机制。