5

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

我的两个问题是:

1)在一个相当高效的聊天服务器中,轮询在什么时候变得令人望而却步?2)我真的不想用剑圣。我不太了解彗星的工作原理。我想我想知道使用 Javascript(创建客户端服务器/轮询器)和另一种语言(为防火墙后面的客户端提供有效的轮询以及与 CGI 的集成)构建这对我来说是否非常困难。和 3)(是的,在 2 中),我是否以正确的方式进行?

我希望得到的最简单的答案是量化的“是的,您将 5 行 Javascript 放入客户端,将 20 行 ruby​​ 放入 CGI 脚本,然后就这样结束了”。

4

5 回答 5

2

我现在正在尝试做同样的事情。Juggernaut 运行良好,但不适用于 Rails 3,如果这不是必需的,那么我建议使用它,因为聊天非常容易。我的项目使用 Rails 3,每 3 秒轮询一次服务器(Campfire 也有 3 秒)。我正在使用 Rails Metal 使轮询速度超快。如果你想用剑圣,那就太好了,2行客户端js,1或2行服务器端。否则,开始工作!

于 2010-04-01T11:23:11.050 回答
1

是的,您将 5 行 Javascript 代码放入客户端,将 20 行 ruby​​ 代码放入 CGI 脚本中,然后就收工了

于 2009-01-13T20:41:15.120 回答
1

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

我不确定为什么 Juggernaut 不受欢迎 一个人用它建造了这个64Squares的网站,效果很好。

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

祝你好运

干杯

于 2009-01-13T23:37:30.553 回答
0

COMET 通过保持与服务器的连接在 Javascript 中打开来工作(在 COMET 网站上有很多关于如何获取此异步数据的示例)。服务器基本上将数据写出并刷新,这可以在紧密循环中使用互斥锁来完成。您可能还需要一个消息队列。

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

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

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

于 2009-01-14T08:32:23.467 回答
0

营火呢?它每 5 秒轮询一次服务器。像梦一样工作。

于 2009-01-14T09:01:11.287 回答