Как я могу объединить Firebase Callables с автономной функциональностью PWA? - PullRequest
2 голосов
/ 06 июля 2019

Поскольку Service Worker обрабатывает запросы https, когда приложение находится в автономном режиме, я ожидаю, что при использовании функций Firebase Callables должно применяться то же поведение. Эти Callables - это просто вызовы HTTP - POST.

Окружение:

  • Угловой 8 Frontend
  • @ угловой / пожарный пакет в качестве оболочки для Firebase SDK
  • @ angular / pwa для автономных возможностей
  • firebase http callables функционирует на стороне сервера для обработки запросов с внешнего интерфейса

Ситуация:

Как пользователь, я запускаю на внешнем интерфейсе действие, которое будет выполнять запрос к вызываемой функции из базы. Вызываемая функция отправит мне ответ с информацией об успехе или неудаче, который будет представлен мне в пользовательском интерфейсе. Это работает на 100%, как и ожидалось. Теперь я сделаю то же самое с моим устройством в автономном режиме.

Мои ожидания:

Поскольку мое приложение является PWA, запрос должен быть перехвачен работником службы. Статус результата запроса должен быть 200. Когда мое устройство снова подключается к сети, работник службы должен отправить исходный запрос.

Текущее поведение:

При вызове функции firebase в автономном режиме веб-интерфейс (угловая служба) немедленно возвращает код состояния 500 «внутренняя ошибка». При возвращении в онлайн сервисный работник не отправляет прошлый запрос вызываемой функции на firebase.

Правильно ли мое ожидание? Нужно ли что-то настраивать на стороне пожарной базы / угловой? Это из-за использования @ angular / fire в качестве оболочки?

Имеете ли вы какой-либо опыт использования таких вариантов использования и можете предоставить дополнительную информацию?

Заранее большое спасибо!

import { AngularFireFunctions } from '@angular/fire/functions';

constructor(
    private readonly functions: AngularFireFunctions
}

doSomething(data:{text:string}){
  return this.functions.httpsCallable('handleEvent')({
        ... some data to pass to the function here ...
  });
}

При вызове doSomething, когда браузер находится в автономном режиме, ответ с кодом состояния 500 - внутренний - передается обратно.

Вызов функции в режиме онлайн работает, как и ожидалось.

...