使用Jetty Continuations进行GWT服务器推送?

时间:2011-01-25 11:22:39

标签: gwt jetty continuations

我应该实现一个Web应用程序,其中用户登录和注册某些事件(在本例中为警报)。发生警报时,服务器需要将警报推送给所有客户端。

目前我正在使用

  • 客户端的GWT
  • 服务器端的Jetty

使用Jetty Continuations实现服务器推送是一个好主意吗?我的要求是:

  • 客户数量将非常少(<20),但未来可能会增加
  • 警报不得丢失(即如果客户端将关闭,则不得错过任何警报)
  • 如果客户端出现故障,其他客户需要被告知(或者至少管理员应该收到某种通知,例如通过邮件)。

2 个答案:

答案 0 :(得分:2)

使用Comet(例如Jetty Continuations)的主要原因是,它允许降低轮询频率。换句话说:通过使用来自客户端的频繁轮询,您可以在没有Comet的情况下实现相同的功能。选择哪种替代方案取决于您的应用程序的特征 - 取决于此,每种替代方案可能比另一种方案更有效或更低效!

在您的情况下,由于您在客户端发生故障时需要通知,因此使用频繁轮询是有意义的。 Comet(长轮询)不适合这项任务:由于它的原则,它可能需要很长时间才能发送新请求。接收新请求是服务器知道客户端仍处于活动状态的唯一方式(请记住,Web服务器 - 无论Comet与否 - 都不能向客户端发送请求)。

答案 1 :(得分:1)

您的要求声明警报不得丢失,这意味着比长轮询或频繁轮询更复杂的解决方案。

您的客户端应向服务器发送确认消息,因为您的用户可能在警报消息到达后立即关闭应用程序,他/她可能会丢失该警报。 此外,您的用户应单击警报消息以确认服务器。您可以设置时间限制来确认,如果客户端没有发送确认消息,那么您可以认为警报已丢失..

通过确认algortihm的长轮询将是我解决问题的选择..