ruby:库,框架,服务器,为基于Web的聊天开发提供并发性

时间:2012-10-28 02:43:13

标签: ruby web-applications concurrency chat nonblocking

我应该使用什么ruby并发库/框架来开发基于Web的聊天?

我已阅读有关Eventmachine和Celluloid 以及Sinatra :: Synchrony,Cramp,Goliath和Gserver 并发就绪服务器的内容。如果我做对了,所有这些库或服务器使用两种主要的不同方法实现并发:反应器模式(主要是所有这些),或使用多线程(即gserver,......)。

现在,如果这一切都是正确的,我希望是这样,那么有人可以:

  • 纠正我,如果不是......
  • 指出我错过的其他积极开发的图书馆或框架?

我之所以这样问,原因是为了学习目的,我正在尝试使用服务器端的ruby构建基于Web的聊天。它将使用websockets或Server Side Events与Jquery或其他东西进行客户端交互。

此外,我已经阅读过将ruby与Xmpp服务器或pub / sub消息系统(如Faye)一起使用。如果我把其中一个放在盘子里,如果我说这一切都缩小到只需要担心只是以非阻塞方式向这些服务器发出请求,而不是必须设置一个完整的“我是正确的”非阻塞“ruby聊天服务器?

我知道这有点令人费解,但我希望它仍然有意义...... 但是,如果我对某些事情的方向完全错误,有人可以至少给我一个关于我需要更好理解的一般概念吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

有趣的你应该问。来自Ruby Weekly的Peter Cooper提到(问题116 - 2012年10月25日)talk副标题为“Ruby开发人员需要停止使用EventMachine。这是错误的方向”,这引发了对HN的一些有趣的争论,因为许多框架都建立在它之上(Goliath,Cramp等)

对于Celluloid(以Sidekiq作为其最着名的客户端),对Node.js平台或其他提供来自get go的并发原语的语言的幻灭群体。是的,Go,Erlang,Clojure ......

就个人而言,我不久前使用Cramp,Redis Pub / Sub和Websockets实现了基于网络的实时聊天,这些聊天大致改编自以下demo code。它的工作方式与广告一样,但它获得的流量与其他地方的某些大批量系统的要求不相符。