凤凰频道及其与插座的关系

时间:2016-01-25 02:06:09

标签: performance websocket elixir phoenix-framework

我需要一些关于elixir / phoenix频道的建议。我有一个与场地变化相关的应用程序,为了减少发送到每个客户端的数据量,我只希望每个客户订阅它关心的场所。

考虑到这一点,我想到了为“VenueChanges / *”建立一个频道的路线,让每个客户多次订阅该频道,并关注每个场所ID,即“VenueChanges / 1”,“ VenueChanges / 2“等。

客户关心的场地会经常变化,这意味着很多加入和离开渠道。

我的问题是,让客户多次加入频道的开销是多少。我是否正确假设仍然只有一个套接字打开而且每个加入的渠道都没有新的套接字?

还有关于管理客户不断加入和离开频道的任何建议吗?一般的其他建议吗?如果这是一个坏主意什么是更好的选择?

1 个答案:

答案 0 :(得分:0)

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

虽然没有直接回答你的一致加入/离开问题,但Chris McCord关于Phoenix Channels vs Rails Action Cable的帖子有一些关于性能的非常好的数据,最好总结如下:

  

有了Phoenix,我们已经证明渠道绩效保持一致   随着通知需求的增加,这对于处理至关重要   交通高峰并避免超载

尽管如此,您的服务器硬件和部署分发策略在回答这一问题时也会发挥重要作用。

最后,基于您的意思是加入/离开频道主题(或"会议室"因为它在某些地方被称为),如Chris&#中所见39;用55,000个连接测试:

  

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