如何在节点应用程序中实时提供给所有跟随者

我正在开发node.js和MongoDB中的社交networkingtypes的应用程序。 我想添加一个function,如 – 如果用户A已经跟随用户B,那么当用户B发布的东西,它应该自动来到他的墙上的用户A!

方法1 – 这是我研究到现在创build一个用户B的频道,所有其他用户订阅该频道,当用户B张贴的东西,然后发射与所有用户socket.io。 所以对于这种方法,我们正在考虑在每次新用户注册时创build一个频道。

但问题是 – 这是可行的方法,我怎么知道哪个通道是哪个用户或者是否有方法在MongoDB中存储通道。 如果我创build了太多频道,会导致我的服务器崩溃?

方法2 –

我得到的另一个方法是

在数据库中查找源用户的追随者。 并使用socket.io发送饲料给所有的追随者如何扩大这个,如果我有100个追随者的每个用户,当每次用户发布,将search在数据库中创build一个开销。 使用Rediscaching会更好地存储追随者? 而不是检查追随者 – 从Redis中find并使用socket.io发出消息

方法3 –

我听说Redis pub / sub的名字,但无法find它在我的应用程序中的工作原理。

请build议一些创build这样的最好的标准! 如果上面的方法是好的,你可以请build议我的stream程或如何创build一个代码!

如果你给我一个例子,我会很棒。

我认为你可以使用Approach 2 ,但你必须创build一个队列(redis队列或rabbitMQ)来做到这一点。 我的意思是当你创build一个post,它必须推动队列推送消息到100,1000跟随者在你的数据库。