凤凰频道及其与套接字的关系

Owe*_*wen 5 performance elixir websocket phoenix-framework

我需要一些关于长生不老药/凤凰通道的建议。我有一个与场所更改有关的应用程序,为了减少发送给每个客户端的数据量,我只希望每个客户端都订阅它关心的场所。

考虑到这一点,我正在考虑采用“ VenueChanges / *”频道,并让每个客户用它关心的每个场所ID多次订阅该频道,即“ VenueChanges / 1”,“ VenueChanges / 2” ”等

客户关心的场所将经常变化,这意味着需要大量的加入和离开渠道。

我的问题是,让客户多次加入渠道会带来哪些开销?我假设每个连接的通道仍然只有一个插座而不是一个新的插座,这是正确的吗?

还有关于管理客户不断加入和退出渠道的建议吗?一般还有其他建议吗?如果这不是一个好主意,那么什么是更好的选择?

Dav*_*hta 1

关于套接字问题,您是正确的,因为每个客户端仍然只有一个套接字(多个通道在该一个套接字上复用)。

虽然没有直接回答您一贯的加入/离开问题,但 Chris McCord 在Phoenix Channels 与 Rails Action Cable上的帖子提供了一些非常好的性能数据,最好总结如下:

通过 Phoenix,我们证明了随着通知需求的增加,通道性能保持一致,这对于处理流量峰值和避免过载至关重要

也就是说,您的服务器硬件和部署分发策略也将在解决这个问题方面发挥重要作用。

最后,根据您的意思是加入/离开频道主题(或在某些地方称为“房间”),如 Chris 的 55,000 个连接测试中所示:

值得注意的是,Phoenix 在为每个房间 50 名和 200 名用户进行广播测试时保持了相同的响应能力。