Можно ли повторно использовать Firestore Realtime Query после нахождения в фоновом режиме (для экономии затрат) - PullRequest
0 голосов
/ 26 августа 2018

Я использую firebase-js-sdk (в Vue PWA) для прослушивания обновлений в реальном времени из Firestore.

Чтобы восстановить приложение после того, как оно было в фоновом режиме, я использую «vuex-persist» для состояния приложения. Помимо состояния приложения, мне также необходимо восстановить запрос в реальном времени, вызвав .onSnapshot для той же коллекции с теми же параметрами.

Интересно, может ли firebase-js-sdk повторно использовать запрос в реальном времени, который был запрошен до того, как приложение перешло в фоновый режим. В противном случае с меня будет взиматься плата каждый раз, когда пользователь переключается в фоновый режим и обратно.

Спасибо за любую помощь, Томас

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

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

Согласно этим 2 ответам:

Я не буду платить, если выполнены следующие условия:

  • Я воссоздаю тот же запрос (который, в свою очередь, генерирует тот же ключ resumeToken. Ключ resumeToken является своего рода ключом, который используется серверной частью firestore для повторного распознавания запросов)
  • Нет данных о результирующем наборе этого запроса изменилось (Firestore отслеживает запросы в течение максимум 30 минут и сделает недействительным результирующий набор, если изменения произойдут)
  • Постоянство включено, что позволяет клиентскому SDK обслуживать локально кэшированные наборы результатов
  • Набор результатов был сгенерирован за последние 30 минут (максимальное время, когда запрос отслеживается пожарным хранилищем). Если он старше, то запрос get выполняется снова, а затем мне платят за это.
0 голосов
/ 28 августа 2018

Вы должны инициализировать свою Firebase в вашем файле main.js или, в основном, на странице, которая всегда запускается при запуске или выводе приложения на передний план, так что даже если ваш слушатель отсоединяется, когда вы снова выходите на передний план, инициируется Firebase, и поэтомуновый слушатель может быть создан.

Так что в вашем main.js у вас будет что-то вроде:

import Firebase from 'firebase'
let config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    storageBucket: "...",
    messagingSenderId: "..."
  };

let app = Firebase.initializeApp(config)
let db = app.database()
let booksRef = db.ref('books') 
//....etc///

Если вы правильно настроили и настроили своих слушателей в методе, который запускается при каждой загрузке страницыУ вас всегда есть слушатель.Просто убедитесь, что вы избегаете создания нескольких слушателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...