Action Cable和Faye是相同的吗?

8

在我的应用程序中实现Web Sockets时,我对哪个gem更好感到困惑。我发现有很多不同的选择,但是有些很难区分。

最终,我选择了Action Cable(Rails 5的本地部分)和Faye(早期出现并变得非常流行)。

但现在我卡住了 - Action Cable和Faye是一样的吗?它们之间有什么区别(如果有的话)?


2
回答问题比投反对票容易,对吧? - Alexander Gorg
1
我认为这些踩的原因是问题有点离题 - rogelio
4
我认为这是因为人们喜欢像“运行迁移的命令是什么?”这样的问题。我的问题并不是离题的,只是乍一看可能会这样认为。至少我不想离题。我只是想在将这些宝石集成到进一步编程之前知道它们之间的区别。 - Alexander Gorg
2
为什么这是不相关的话题? - Felipe Maion
2
@FelipeMaion 人们认为我在问:“哪个宝石更好?”。然而,这是关于这些宝石之间的区别的问题。 - Alexander Gorg
1个回答

10

来自 Faye 网站:Faye 是基于 Bayeux 协议的发布-订阅消息系统。它提供了用于 Node.js 和 Ruby 的消息服务器,以及用于服务器和所有主要 Web 浏览器的客户端。

来自 ActionCable 自述文件:Action Cable 与 Rails 应用程序的其余部分无缝集成 WebSockets。它允许在 Ruby 中编写实时功能,并采用与您的 Rails 应用程序的其他部分相同的样式和形式,同时仍然具有良好的性能和可伸缩性。它是一个全栈提供程序,提供客户端 JavaScript 框架和服务器端 Ruby 框架。您可以访问使用 Active Record 或您选择的 ORM 编写的完整域模型。


简短回答是:是的,两者都是发布-订阅消息系统。

详细回答是:不完全是,因为 Faye 是一种低级工具,而 ActionCable 使用 Faye (看这里),至少某些组件如此。但是,您始终可以使用 Faye 或 ActionCable 构建应用程序并获得相同的结果(也许需要不同的努力)。最大的区别在于 Faye 作为基于 Rack 的组件而不是基于 Rails 的组件工作。


未来的读者可能想知道ActionCable执行得非常差。仅在将我的工作移动到生产环境后,我就遇到了自己的问题,它实际上是如此糟糕,以至于如果您期望高流量,则无法使用。例如,这篇文章描述了涉及20,000个空闲客户端的基准测试。 ActionCable使用3.5GB的内存,而其他解决方案使用的内存小于900MB。https://medium.com/@leshchuk/from-action-to-any-1e8d863dd4cf - calyxofheld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接