如何在节点应用程序中获取所有关注者的实时提要

How to get real time feed to all the follower in node application

我正在 node.js 和 MongoDB 开发社交网络类型的应用程序。 我想添加一个功能,例如 - 如果用户 A 关注了用户 B,那么当用户 B post 某事时,它应该会自动出现在用户 A 的墙上!

方法 1- 这是我目前研究的 创建用户 B 的频道,所有其他用户订阅该频道,当用户 B post 时,然后在所有订阅者上使用 socket.io 发出该内容。 所以对于这种方法,我们正在考虑在每次新用户注册时创建一个频道。

但问题是—— 关于我如何知道哪个频道是哪个用户或者有没有办法将频道存储在 MongoDB 中,这是可行的方法吗? 如果我创建太多频道会导致我的服务器崩溃吗?

方法 2 -

我得到的另一种方法是

在您的数据库中查找源用户的关注者。 并使用 socket.io 向所有关注者发送提要 如果我有每个用户的 100 个关注者并且每次用户 post 时,如何扩展它,将在数据库中搜索会产生开销。 使用 Redis 缓存存储关注者会更好吗? 而不是检查追随者- 从 Redis 中找到并使用 socket.io

发出消息

方法 3 -

我听说过 Redis 的名字 pub/sub 但无法找到它在我的应用程序中的工作方式。

请提出一些创建此类内容的最佳标准! 如果上述方法没问题,你能给我建议流程吗?或者我如何为此创建代码!

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

我认为您可以使用 Approach 2,但您必须创建一个队列(redis 队列或 rabbitMQ)来执行此操作。 我的意思是当您创建一个 post 时,它必须推送到队列以将消息推送到您数据库中的 100、1000 个关注者。