我需要一些关于elixir / phoenix频道的建议.我有一个与场地变化相关的应用程序,为了减少发送到每个客户端的数据量,我只希望每个客户订阅它关心的场所. 考虑到这一点,我想到了为“Ve
考虑到这一点,我想到了为“VenueChanges / *”建立一个频道的路线,并让每个客户多次订阅该频道,并关注每个场所ID,即“VenueChanges / 1”,“VenueChanges / 2” “等
客户关心的场地会经常变化,这意味着很多加入和离开渠道.
我的问题是,让客户多次加入频道的开销是多少.我是否正确假设仍然只有一个套接字打开而且每个加入的通道都没有新的套接字?
有关管理客户不断加入和退出渠道的建议吗?一般的其他建议吗?如果这是一个坏主意什么是更好的选择?
关于套接字问题,你是正确的,因为每个客户端仍然只有一个套接字(多个通道在这个套接字上复用).虽然没有直接回答你的一致加入/离开问题,但Chris McCord在Phoenix Channels vs Rails Action Cable上的帖子有一些非常好的性能数据,最好总结如下:
With Phoenix, we’ve shown that channels performance remains consistent
as notification demand increases, which is essential for handling
traffic spikes and avoiding overload
也就是说,您的服务器硬件和部署分发策略也将在回答这一问题方面发挥重要作用.
最后,基于你的意思是加入/离开频道主题(或在某些地方称为“房间”),如Chris的55,000个连接测试所示:
It’s important to note that Phoenix maintains the same responsiveness when broadcasting for both the 50 and 200 users per room tests.