Firebase: узнать количество пользователей, находящихся в настоящее время в чате (или на любом абстрактном ресурсе) - PullRequest
1 голос
/ 19 июня 2020

У меня есть веб-приложение, в котором пользователи могут присоединиться к разному количеству чатов. Коллекция firestore выглядит так:

chatrooms: {
   "g4HL09vHfkaO3": {
     "name": "Chatroom 1",
     "messages": ...
   },
   "lpScgY74gHJ87": {
     "name": "Chatroom 2",
     "messages": ...
   }
}

Когда пользователь присоединяется к чату, веб-приложение прикрепляет слушателя к данному документу, чтобы получать сообщения и получать входящие, например:

unsubscribe = firebase
  .firestore()
  .collection("chatrooms")
  .doc("g4HL09vHfkaO3")
  .onSnapshot( ... )

и когда пользователь покинет чат, приложение отсоединит слушателя следующим образом:

unsubscribe()

Теперь моя цель - отобразить в приложении количество пользователей, которые в данный момент находятся внутри данного чата, поэтому возникает вопрос:

  • можно ли получить из firebase глобальное количество слушателей, подключенных, например, к чату g4HL09vHfkaO3?
  • если нет, то каков самый простой способ получить то, что хочу?

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Firestore не имеет API-интерфейса publi c, который возвращал бы количество слушателей в коллекцию. Если вы хотите узнать количество людей в комнате чата, вы можете:

  1. Хранить счетчик в каждом документе комнаты, который каждый пользователь увеличивает или уменьшает.
  2. Используйте Realtime База данных для построения системы присутствия для каждой комнаты. Это описано в документации как решение: https://firebase.google.com/docs/firestore/solutions/presence
0 голосов
/ 19 июня 2020

Существует способ получить количество объектов, прикрепленных к родительскому объекту.

Вы слушаете коллекцию чаты и можете использовать метод под названием numChildren ( ) предоставляется firebase, чтобы получить общий размер списка пользователей, использующих чат.

Ссылка для справки, где это подробно объясняется: ссылка

...