大量的 WebSocket 连接

din*_*eth 5 html ruby ruby-on-rails websocket em-websocket

我正在编写一个应用程序来跟踪在某个任务的用户之间推送的内容。我正在考虑使用 WebSockets 发送新内容,因为它们可供当前使用该应用程序执行该给定任务的所有用户使用。

我在 Rails 上写这篇文章,客户端应用程序在 iOS 上(可能也会在 Android 上)。恐怕这个 WebSocket 解决方案可能无法很好地扩展。在决定使用 WebSockets 还是使用某种轮询解决方案时,我正在寻求一些建议和需要考虑的事项。

Ruby on Rails 服务器(如 Heroku)是否支持同时打开大量 WebSocket?为了争论,让我们说一百万个连接。任何人都可以向我提供此类东西的任何材料?

如果我以这种方式构建它,在服务器托管上会花费更多吗?

甚至可以同时维护数百万个 WebSockets 吗?我觉得这可能不是最好的设计决定。

这是我第一次尝试正确的 Rails API。任何意见是极大的赞赏。谢谢。

mok*_*oka 3

通过 WebSockets 的数百万个连接,使用 Ruby,如果您不使用集群在不同实例之间传播连接来处理所有数据处理,我看不到它的真实性。
这里的问题是序列化和反序列化数据。

此外,您还必须研究需要从服务器将数据提取到客户端的频率,以及是否值得使用 AJAX 进行定期检查,然后一直处理连接。因为如果您确实处理连接然后不使用它 - 这是资源的浪费。WebSockets 构建在 TCP 层之上,所有连接对于操作系统来说都不是“便宜”的,并要求它们再次提供可用的数据并不是一个简单的过程,拥有数百万个连接,如果不使用最先进的技术,这几乎是不可能的在世界上。

我认为 Erlang 能够处理数百万个连接,但我没有详细信息。连接是一回事,另一回事是处理数据和连接之间的交互 ​​- 您可能需要检查这一点,因为如果您有繁重的处理算法,那么您肯定需要研究集群解决方案的水平扩展选项。