На самом деле ответ в код :
/**
* A PersistentStream that implements the Listen RPC.
*
* Once the Listen stream has called the openHandler, any number of listen and
* unlisten calls calls can be sent to control what changes will be sent from
* the server for ListenResponses.
*/
export class PersistentListenStream extends PersistentStream< // ...
Когда мы создаем onSnapshot
, запрос отправляется на сервер, который запоминает, что интересует клиента, и обновляет его фильтр уведомлений.
Это означает, что мы находимся в сценарии № 2 и объясняет стоимость открытых соединений для сервера.
Это также означает, что нам все равно, сколько onSnapshot
мы создадим. Что касается клиента, не возникает проблем с производительностью при выполнении одного onSnapshot
для каждого документа, который мы получаем (но для этого в Firestore Стоимость чтения ).