代码之家  ›  专栏  ›  技术社区  ›  user54650

服务器端推入式导轨

  •  5
  • user54650  · 技术社区  · 17 年前

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

    我的两个问题是:

    1)在一个相当高效的聊天服务器中,什么时候投票会变得禁止? 2)我真的不想用“大家伙”。我对彗星的工作原理知之甚少。我想我在想,使用javascript(创建客户端服务器/poller)和另一种语言(为防火墙后面的客户端提供有效的轮询,并集成到CGI中)来构建它是否会非常困难。 3)(是的,2分之2),我是否会这样做?

    我希望得到的最简单的答案是一个量化的“是的,你把5行javascript放到客户机中,把20行Ruby放到一个CGI脚本中,并称之为一天”。

    5 回复  |  直到 17 年前
        1
  •  1
  •   cgreeno    17 年前

    如果这么容易做,人们就不会建造那些技术。我觉得投票总是一种很糟糕的方式。说…

    我不知道为什么一个家伙要为建造这个网站工作 64Squares 有了它,一切都很好。

    我知道其他网站,比如 WeeWar 使用轮询方法,它们每分钟有超过400个请求,所以我认为在扩展成为一个问题之前需要一些时间。

    祝你好运

    干杯

        2
  •  2
  •   user306812    16 年前

    我现在也在做同样的事。Juggernaut工作得很好,但不适用于Rails3,如果这不是一个要求,那么我建议使用它,因为它非常容易聊天。 我的项目使用Rails3,每3秒轮询一次服务器(Campfire也使用3秒)。我正在使用Rails金属来让投票超快。如果您想使用Juggernaut,那么很好,2行客户端JS和1或2行服务器端。否则,开始工作!

        3
  •  1
  •   allesklar    17 年前

    是的,你把5行javascript放到客户机中,把20行Ruby放到一个CGI脚本中,然后每天调用它。

        4
  •  0
  •   Jonathan C Dickinson    17 年前

    Comet的工作原理是在JavaScript中保持与服务器的连接处于打开状态(在Comet网站上有很多关于如何获取异步数据的示例)。服务器基本上把数据写出来并刷新它,这可以使用一个紧密循环中的互斥体来完成。您可能还需要一个排序的消息队列。

    最好了解一下 BOSH 从长远来看。这是彗星的自然演化过程。

    虽然这颗巨型彗星有一条学习曲线(或者可能不是真的),但学习如何做彗星是一条更陡峭的曲线。即使只是异步推送也很难。不仅如此,您还需要考虑如何使其具有良好的伸缩性。我从未使用过Juggernaut,但就RoR插件而言,我认为这是微不足道的。如果他们知道如何使其更好地扩展,您就可以免费获得更快的性能。

    投票是另一个技术上可行的选择 简单的 但是,我很热衷于不使用轮询,因为它会杀死您的服务器——所以我不会在这里详细介绍它,因为我觉得轮询是一种懒惰的方式。

        5
  •  0
  •   August Lilleaas    17 年前

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