是否可以使用meteor-presence简单地显示一些在线用户(当前已登录)?
我看到Meteor.presences
集合中的文档默认情况下不会删除自己,所以简单Meteor.presences.find().count()
不是我正在寻找的值......我应该手动删除它们还是应该检查每个文档是否有userID
字段?
编辑:
为了更多地说明发生在我身上的事情,我尝试在 2 个不同的浏览器中使用 2 个不同的用户登录。调用后,Meteor.presences
我可以在我的收藏中看到两个文档,例如
docs: {
djF3noxe3AhxDRfZw: {
_id: "djF3noxe3AhxDRfZw",
state: "online",
userId: "SDeLPJzoabFt4Knei"
}, {
t4r2Q7KGKji4FPS9s: {
_id: "t4r2Q7KGKji4FPS9s",
state: "online",
userId: "5zvYoC37aXSADGNEg"
}
}
几分钟不活动后,两个文档看起来都一样。与一个用户注销(调用Meteor.logout()
)后,我仍然有 2 个文档(即使在几分钟后),唯一的区别是其中一个没有更多userID
:
docs: {
djF3noxe3AhxDRfZw: {
_id: "djF3noxe3AhxDRfZw",
state: "online"
}, {
t4r2Q7KGKji4FPS9s: {
_id: "t4r2Q7KGKji4FPS9s",
state: "online",
userId: "5zvYoC37aXSADGNEg"
}
}
只有在关闭该浏览器窗口后,相关文档才会自行删除。
因此,如果我Meteor.presences.find().count()
在两个窗口都打开时调用,我总是会得到2
回报,无论用户的在线/离线状态如何。
我目前使用的所有代码都是示例中的代码:
Meteor.publish('userPresence', function() {
var filter = {};
return Meteor.presences.find(filter, {fields: {state: true, userId: true}});
});