我应该实现一个Web应用程序,其中用户登录和注册某些事件(在本例中为警报)。发生警报时,服务器需要将警报推送给所有客户端。
目前我正在使用
使用Jetty Continuations实现服务器推送是一个好主意吗?我的要求是:
答案 0 :(得分:2)
使用Comet(例如Jetty Continuations)的主要原因是,它允许降低轮询频率。换句话说:通过使用来自客户端的频繁轮询,您可以在没有Comet的情况下实现相同的功能。选择哪种替代方案取决于您的应用程序的特征 - 取决于此,每种替代方案可能比另一种方案更有效或更低效!
在您的情况下,由于您在客户端发生故障时需要通知,因此使用频繁轮询是有意义的。 Comet(长轮询)不适合这项任务:由于它的原则,它可能需要很长时间才能发送新请求。接收新请求是服务器知道客户端仍处于活动状态的唯一方式(请记住,Web服务器 - 无论Comet与否 - 都不能向客户端发送请求)。
答案 1 :(得分:1)
您的要求声明警报不得丢失,这意味着比长轮询或频繁轮询更复杂的解决方案。
您的客户端应向服务器发送确认消息,因为您的用户可能在警报消息到达后立即关闭应用程序,他/她可能会丢失该警报。 此外,您的用户应单击警报消息以确认服务器。您可以设置时间限制来确认,如果客户端没有发送确认消息,那么您可以认为警报已丢失..
通过确认algortihm的长轮询将是我解决问题的选择..