Java HTTP推送(消息传递)的最佳解决方案

cru*_*sam 17 java messaging jms comet http

我们希望将数据从服务器推送到客户端,但只能使用HTTP(端口80).消息传递的最佳解决方案是什么?一个想法是Comet.是否有其他想法或框架可以提供JMS over HTTP.(是的,ActiveMQ也支持它,但是哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇.

cle*_*tus 9

出于许多原因,最简单的解决方案是使用基于Comet的方法(就像你提到的那样).这意味着客户端(您希望"推送"消息)打开长期存在的HTTP连接.这些连接保持打开状态,直到超时或您向客户端发送消息.一旦发生任何一个,客户端就会打开一个新连接.

直接连接到客户端可能有问题,原因有很多:它们可能落后于不允许的防火墙,它们可能落后于代理等等.

除非您的客户是真正的服务器(在这种情况下,您真的是客户端),让他们与您联系并发送模仿推送响应.

  • 新连接是侦听下一条消息.这里的想法是始终保持与服务器的开放连接,只是等待服务器对它做一些事情.这允许服务器(实际上)发起通信.一旦服务器使用连接发送消息,就需要为下一条消息打开一个新连接.所有这一切都假设我们有一个服务器需要能够将数据推送到的客户端.另一种方法是定期轮询更改,但这可能会在到达客户端时造成延迟. (4认同)

Jas*_*man 7

AtmosphereDWR都是开源框架,可以使Comet在Java中变得简单.