1

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

我已经阅读了 Eventmachine 和 Celluloid,以及 Sinatra::Synchrony、Cramp、Goliath 和 Gserver concurrency-ready-servers。如果我做对了,所有这些库或服务器使用两种主要的不同方法实现并发:反应器模式(大部分都是),或使用多线程(即 gserver,...)。

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

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

我问这个的原因是我试图在服务器端使用 ruby​​ 构建一个基于 Web 的聊天,以用于学习目的。它将使用 websockets 或服务器端事件,使用 Jquery 或其他东西与客户端交互。

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

我知道这有点令人费解,但我希望它仍然有意义.. 但如果我在某件事上完全走错了方向,有人可以给我至少一个笼统的、模糊的想法,我需要更好地理解什么吗?

谢谢!

4

1 回答 1

1

有趣的是你应该问。Ruby Weekly 的 Peter Cooper 提到(第 116 期 - 2012 年 10 月 25 日)一个标题为“Ruby 开发人员需要停止使用 EventMachine。这是错误的方向”的演讲,这引发了一些关于 HN 的有趣辩论因为许多框架都是建立在它之上的(歌利亚、抽筋等)

失望的人群要么涌向赛璐珞(Sidekiq 作为其最著名的客户端)、Node.js 平台,要么涌向其他从一开始就提供可靠并发原语的语言。是的,Go、Erlang、Clojure...

就个人而言,我不久前使用 Cramp、Redis Pub/Sub 和 Websockets 实现了一个基于 Web 的实时聊天,大致改编自以下演示代码。它像宣传的那样工作,但它获得的流量无法与其他地方的一些大容量系统的要求相比。

于 2012-10-28T05:01:05.777 回答