ruby-on-rails - 什么更好 : Using multiple channels or Having multiple conditions in single channel?

标签 ruby-on-rails websocket actioncable

我正在使用 Rails ActionCable。

我主要可以在两个选项中进行选择。其中之一是使用多个 channel 来实现不同的功能。另一种选择是使用具有多个条件的相同 channel 来创建相同的功能。

哪个在放大时更好?在构建应用程序时过度依赖 websockets (Actioncable) 有什么缺点?

有人可以给我推荐一些解释 websockets、redis 缓存及其在应用程序扩展时的效果的好文章吗?

感谢你们期待积极的回应。

最佳答案

尽管我认为该问题与“Multiple websocket channels, single ws object?”重复,但我将添加一些具体的 ActionCable 考虑事项以进行澄清。

Which one is better while scaling up?

单个 WebSocket 连接(通常)在向上扩展时更好。

服务器对其可以处理的连接数有限制,这意味着为每个客户端添加 WebSocket 连接将消耗有限的服务器资源。

例如,如果每个客户端需要 2 个 WebSocket 连接而不是 1 个,则服务器的容量将减少一半(从 100% 下降到 50%)。

What are the disadvantages of relying too much on websockets (Actioncable) while building applications?

有些机器运行不支持 WebSockets 的旧版浏览器。此外,WebSocket 应用程序和客户端通常更难编码,这意味着更高的维护成本。

话虽如此,WebSockets 是解决困扰 Web 应用程序多年的问题的绝妙解决方案,并且优于轮询技术。

总而言之,我认为应该忽略缺点,因为优点远远超过成本。

但是:

话虽如此,请注意目前 Actioncable 的实现速度非常慢。

事实上,有人可能会争辩说实现速度太慢以至于轮询会更好。

比较 ActionCable to AnyCable或服务器端 Iodine WebSocket + Pub/Sub solution会立即强调一个事实,即 ActionCable 应该被其他解决方案取代,直到它被修复。

进一步阅读:

我刚开始阅读 this article about Ruby WebSockets, Push and Pub/Sub , 看起来写得很好。

我还写了一篇关于 WebSockets 的 Ruby 实现的主要问题以及服务器端 WebSocket 解决方案如何解决这些问题的文章。你可以read it here .

关于ruby-on-rails - 什么更好 : Using multiple channels or Having multiple conditions in single channel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51172295/

相关文章:

ruby-on-rails - Actioncable Nginx 和 Puma WebSocket 握手 : Unexpected response

ruby-on-rails - rails session 模型

vb.net - Websocket 服务器 VB.NET - 数据框架

ruby-on-rails - 如何允许从 Trello API ips 渲染到 Web 控制台?

websocket - SignalR 和失败的 websocket 连接,但仍然有效

java - Flash WebSockets 后备和 Jetty 8?

elixir - Phoenix channel 的广播如何影响其他节点上的客户端?

ruby-on-rails - Action 电缆和 ionic

ruby-on-rails - 向 Spree 添加新的 ActiveMerchant Gateway (Elavon)

ruby-on-rails - 分别对用户和管理员进行身份验证