哪个更好:使用多个通道还是在单个通道中具有多个条件?

What is better: Using multiple channels or Having multiple conditions in single channel?

我正在使用 Rails ActionCable。

我主要有两个选择。其中之一是使用多个渠道来实现不同的功能。另一种选择是使用具有多个条件的相同通道来创建相同的功能。

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

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

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

尽管我认为该问题与“”重复,但我将添加一些具体的 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 or the server-side Iodine WebSocket + Pub/Sub solution 会立即突出一个事实,即 ActionCable 应该被其他解决方案取代,直到它被修复。

进一步阅读

刚开始看this article about Ruby WebSockets, Push and Pub/Sub,感觉写的很好

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