【发布时间】:2017-10-22 06:42:03
【问题描述】:
我正在 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 的名称,但无法找到它在我的应用程序中的工作方式。
请提出一些创建此类内容的最佳标准! 如果上述方法都很好,您能否建议我为此的流程或如何为此创建代码!
如果你能给我一个例子,我会很好。
【问题讨论】:
标签: node.js mongoose socket.io publish-subscribe node-redis