服务器端推入Rails

我想使用AJAX在rails中实现可扩展的聊天室。 我从研究中得知,唯一可扩展性是在服务器端推送时发生的。

我的两个问题是:

1)在一个相当有效的聊​​天服务器中,轮询在什么时候变得禁止? 2)我真的不想使用Juggernaut。 我不太了解彗星是如何工作的。 我想我想知道,如果使用Javascript(创建客户端服务器/轮询器)和另一种语言(为防火墙后面的客户端提供有效的轮询,以及集成到CGI中),这对我来说是非常困难的。 3)(是的,在2中),我是否正在以正确的方式去做?

我希望得到的最简单的答案是量化的“是的,你将5行Javascript放入客户端,将20行ruby放入CGI脚本中,并称之为一天”。

如果这很容易做到,人们就不会建造这些技术。 恕我直言,我认为民意调查始终是一种愚蠢的方式。 那说……

我不确定为什么Juggernaut是不行的一个人用它来建造这个64Squares的工作并且效果很好。

我知道其他网站如WeeWar使用轮询方法,他们有向上或400请求一分钟 。 所以我认为缩放成为一个问题需要一段时间。

祝好运

干杯

我现在正试图做同样的事情。 Juggernaut运行良好,但不适用于Rails 3,如果这不是一个要求,那么我建议使用它,因为它很容易聊天。 我的项目使用Rails 3,并且每3秒轮询一次服务器(Campfire也会执行3次)。 我正在使用Rails Metal来快速进行轮询。 如果你想使用Juggernaut,那么很棒,2行客户端js,以及1或2个服务器端。 否则,开始工作!

是的,你将5行Javascript放入客户端,将20行ruby放入CGI脚本中,并将其称为一天

COMET的工作方式是在Javascript中保持与服务器的连接(有很多关于如何在COMET网站上获取此异步数据的示例)。 服务器基本上将数据写出并冲洗它,这可以使用紧密循环中的Mutex来完成。 您可能还需要一个排序的消息队列。

从长远来看,了解BOSH可能会更好。 这是COMET的自然发展。

虽然剑圣有一个学习曲线(或者它可能不是真的),但学习如何做COMET是一个更陡峭的。 即使只是异步推动也更难。 不仅如此,您还需要考虑如何使其扩展良好。 我从未使用过Juggernaut,但就ROR插件而言,我认为它是微不足道的。 如果他们弄清楚如何使其更好地扩展,那么您可以免费获得更快的性能。

轮询是另一种选择,应该在技术上更简单 ,但是,我热衷于不使用轮询,因为它可以杀死你的服务器 – 所以我不会在这里详细说明,因为我觉得轮询是懒惰的路线。

篝火怎么样? 它每5秒轮询一次服务器。 像梦一样工作。