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

时间:2017-10-22 06:42:04

标签: node.js mongoose socket.io publish-subscribe node-redis

我正在node.js和MongoDB中开发社交网络类型的应用程序。 我想添加一个功能,如 - 如果用户A跟随用户B,那么当用户B发布某些内容时,它应该自动在他的墙上发送给用户A!

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

但问题是 - 这是一种可行的方法,因为我如何知道哪个用户是哪个用户,或者有哪种方法可以在MongoDB中存储该频道。 如果我创建太多频道会使我的服务器崩溃吗?

方法2 -

我得到的另一种方法是

在数据库中查找源用户的关注者。 并使用socket.io向所有关注者发送提要 如果我有每个用户的100个关注者以及每次用户发布时,如何在数据库中搜索会产生开销。 使用Redis缓存会更好地存储关注者? 而不是检查粉丝 - 从Redis中找到它并使用socket.io

发出msg

方法3 -

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

请为此类内容提出一些最佳标准! 如果上面的方法很好,你可以建议我的流程或如何为此创建代码!

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

1 个答案:

答案 0 :(得分:1)

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