我正在使用Rails ActionCable。
我主要可以在两个选择之间进行选择。其中之一是将多个通道用于不同的功能。另一种选择是使用具有多个条件的同一通道来创建相同的功能。
扩大规模时,哪个更好?在构建应用程序时过多依赖websockets(Actioncable)有什么缺点?
有人可以推荐我一些不错的文章来解释websocket,redis缓存及其在应用程序扩展时的作用。
感谢你们积极响应。
答案 0 :(得分:0)
尽管我认为问题是“ Multiple websocket channels, single ws object?”的重复,但我还是要添加一些具体的ActionCable注意事项。
扩大规模时,哪个更好?
按比例放大时,单个WebSocket连接通常更好。
服务器对它们可以处理的连接数量有限制,这意味着每个客户端添加WebSocket连接将消耗有限的服务器资源。
例如,如果每个客户端需要2个WebSocket连接而不是1个,则服务器的容量将减少一半(从100%降至50%)。
在构建应用程序时过分依赖websockets(Actioncable)有什么缺点?
某些计算机运行的旧浏览器不支持WebSockets。而且,WebSocket应用程序和客户端通常更难编写代码,这意味着更高的维护成本。
话虽如此,WebSockets是解决困扰Web应用程序多年的问题的绝妙解决方案,并且优于轮询技术。
总而言之,我认为缺点应被忽略,因为优点远大于成本。
但是:
话虽如此,请注意,目前Actioncable
的实现非常慢。
实际上,有人可能会说实施速度太慢,以至于轮询会更好。
比较ActionCable to AnyCable或服务器端Iodine WebSocket + Pub/Sub solution会立即强调一个事实,即在解决问题之前,应将ActionCable替换为其他解决方案。
进一步阅读:
我刚刚开始阅读this article about Ruby WebSockets, Push and Pub/Sub,看来写得很好。
我还写了一篇有关WebSocket的Ruby实现的主要问题以及服务器端WebSocket解决方案如何解决这些问题的文章。您可以read it here。