BOSH(同步HTTP上的双向流)是在不允许真正的服务器推送的情况下实现双向客户端 – 服务器通信的一种偷偷摸摸的方式,最明显的是让服务器将数据推送到浏览器客户端而不必使用客户端轮
它通过客户端向服务器发送请求来工作,并且服务器不会立即响应…而是会记住该请求,但只有在有一些数据要发送时才会响应.当发生这种情况时,客户端会立即发送另一个请求,因此服务器上几乎总是存在“存储请求”,准备将数据推送到客户端.
至少,这就是我认为它的工作原理!
更新:
我的问题是你如何使用Java EE堆栈,即标准servlet来实现这一点.这可能是使用说Servlet 2.x(我有点生疏所以我不知道你是否可以拒绝发送响应或其他东西)或仅通过像Atmosphere这样的包装使用扩展?
也可以看看
> Servlet 3.0 Asynchronous API or Atmosphere? Easy decision!
> Asynchronous HTTP and Comet architectures
> Jean François Arcand blog(大气的作者)