如何在节点应用程序中获取所有关注者的实时提要
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 个关注者。
我正在 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 个关注者。