Ruby on rails Rails的实时性
我正在寻找一种在Rails应用程序(Phusion乘客服务器)上为我的用户实现实时提要的好方法。每个提要可以根据用户的不同而不同,我希望每20-60秒有一个新的条目。对我来说,定期的ajax请求看起来不是最好的方式 我听说了Comet,我想做这样的事情: -使用XMLHttpRequest长轮询等待来自服务器的ping -服务器发送ping请求后,使用ajax更新最新的项目 -启动另一个XMLHttpRequest 这有什么问题吗?有没有更简单更好的方法 谢谢,Ruby on rails Rails的实时性,ruby-on-rails,passenger,real-time,Ruby On Rails,Passenger,Real Time,我正在寻找一种在Rails应用程序(Phusion乘客服务器)上为我的用户实现实时提要的好方法。每个提要可以根据用户的不同而不同,我希望每20-60秒有一个新的条目。对我来说,定期的ajax请求看起来不是最好的方式 我听说了Comet,我想做这样的事情: -使用XMLHttpRequest长轮询等待来自服务器的ping -服务器发送ping请求后,使用ajax更新最新的项目 -启动另一个XMLHttpRequest 这有什么问题吗?有没有更简单更好的方法 谢谢, 就web应用程序(以及Rails
就web应用程序(以及Rails应用程序)而言,实时只是一种幻觉。长轮询是一个非常接近的近似值。不幸的是,它不太适合Rails。乘客更是如此 长轮询要求每个用户都有一个持久的开放连接,这在没有设计来处理它的服务器(如Apache)上的扩展性不强。不幸的是,有很多服务器是为长轮询可伸缩性而设计的,它们可以很好地与Rails配合使用。您可以尝试服务器,但对于您的标准请求,我真的不知道它的性能与Passenger相比如何 我个人对长期投票的看法是,这是一个需要解决问题的解决方案 实际上,你应该问自己以下问题:
- 这些更新的优先级是否足够高,以至于不能等待40秒?
- 如果没有立即收到更新,会发生什么情况?
- 我的用户是否会如此专注于我的应用程序,以至于等待15秒会对他们的体验产生负面影响?
- 在正常使用情况下,我的应用程序吸引用户注意力的百分比是多少?
- 响应更新需要多长时间?
- 它真的需要实时吗?
这将帮助您开始(必须编译nginx)。我们现在正在开发中,并计划在生产中使用它,除非证明它本身不可靠,到目前为止还不错。我不理解您的问题。你是否正在尝试实现一个用户活动提要(比如facebook)?它更像是friendfeed。在很多情况下,长时间轮询是有意义的。假设您正在等待异步后台进程完成。如果用户正在“等待”这种情况发生,则需要长时间轮询或快速XHR请求。