如何使用Java Servlets实现BOSH之类的东西

时间:2010-06-05 16:46:30

标签: http servlets java-ee bosh

BOSH(同步HTTP上的双向流)是在不允许真正的服务器推送的情况下实现双向客户端 - 服务器通信的一种偷偷摸摸的方式,最明显的是让服务器将数据推送到浏览器客户端,无需使用客户端轮询。

它的工作原理是客户端向服务器发送请求,服务器不会立即响应...而是会记住请求,但只有在有一些数据要发送时才会响应。当发生这种情况时,客户端会立即发送另一个请求,因此服务器上几乎总是存在“存储请求”,准备将数据推送到客户端。

至少,这就是我认为的工作原理!

更新: 我的问题是你如何使用Java EE堆栈,即标准servlet来实现这一点。这可能是使用说Servlet 2.x(我有点生疏,所以我不知道你是否可以拒绝发送回复或者什么)或使用扩展通过像Atmosphere这样的包装?

3 个答案:

答案 0 :(得分:3)

不是等效的,但Servlet 3.0引入了异步API。无论有没有Servlet 3.0,还有Atmosphere

另见

答案 1 :(得分:3)

我认为这是您可能正在寻找的内容:http://blog.jwchat.org/jhb/

答案 2 :(得分:1)

也许你正在寻找像comet这样的东西,一种反向AJAX,客户端在其中启动连接,允许服务器在需要时推送数据。

编辑:我意识到您正在寻找 Java 中的解决方案,当我们想到AJAX时,我们会立即想到 JavaScript ,但这个词最近已被污染,它代表的概念不仅仅是JavaScript解决方案。 Comet非常像AJAX这样的概念,也可以用您选择的编程语言实现。