meteor-presenceを使用して、(現在ログインしている) オンライン ユーザーの数を単純に表示することは可能ですか?
コレクション内のドキュメントはMeteor.presences
デフォルトでは自分自身を削除しないことがわかりました。単純なMeteor.presences.find().count()
ものは探している値ではありません...手動で削除する必要がありますか、それとも各ドキュメントにuserID
フィールドがあるかどうかを確認する必要がありますか?
編集:
私に何が起こっているのかをもう少し説明するために、2 つの異なるブラウザーで 2 人の異なるユーザーでログインしようとしました。呼び出した後Meteor.presences
、コレクションに 2 つのドキュメントが表示されます。
docs: {
djF3noxe3AhxDRfZw: {
_id: "djF3noxe3AhxDRfZw",
state: "online",
userId: "SDeLPJzoabFt4Knei"
}, {
t4r2Q7KGKji4FPS9s: {
_id: "t4r2Q7KGKji4FPS9s",
state: "online",
userId: "5zvYoC37aXSADGNEg"
}
}
非アクティブ状態が数分間続くと、両方のドキュメントが同じように見えます。1 人のユーザーでログアウト (呼び出しMeteor.logout()
) した後、(数分後でも) 2 つのドキュメントが残っています。唯一の違いは、そのうちの 1 つに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}});
});