如何使用mongoose有效地在好友列表中显示“已连接用户”状态?
我也使用socket io(我计划切换到socket p2p)
我的朋友列表是一个对象数组,其中uid,name,pic,socket作为道具,此数组存储在我的个人资料文档中。
我在这里看到了几个选项,但无法弄清楚什么是最好的
使用运营商$ in查询连接到该应用的所有用户,并将结果与我的朋友数组相匹配
将每个登录用户存储在一个单独的集合中并进行一种比较
在套接字io适配器中搜索每个朋友的套接字ID(这里要解决几个问题:浏览器刷新)
感谢您的帮助
答案 0 :(得分:1)
考虑将Primus和Primus Rooms用于此目的。基本上,Primus是套接字层的抽象,使您可以使用不同的Web套接字实现。
Primus Rooms增加了让客户(您的朋友)加入某个房间的功能。然后向所有连接的客户端广播消息。
由于这些开源工具可以为您提供所需的功能,因此重新发明轮子是没有意义的。
关于Mongoose:Primus Rooms使用"内存适配器"默认情况下。这意味着当客户加入房间时,不持久存在。但是,您可以随意为Primus Rooms编写一个Mongoose Adapter并将其贡献给社区。 p>