ОК, поэтому у нас есть автономное первое приложение, которое вызывает вызовы для внутреннего API.Могу ли я установить синхронизацию службы ServiceWorker с помощью кода?
Мы хотели бы использовать синхронизацию Service Worker для кэширования вызовов API, когда приложение находится в автономном режиме, а затем обрабатывать эти вызовы при повторном подключении браузера.
Усложнение состоит в том, что при вызове API мы должны иметь действительный токен OWIN.
Существует решение outlined here, в котором говорится, что мы можем просто получить токен, когда нам это нужно; но это не будет работать для нашего приложения, потому что мы разрешаем только один активный сеанс для каждого пользователя. Итак, если мы получим токен в коде, мы рискуем пинать реального пользователя, занятого в настоящее время в приложении.
Итак, вопрос заключается в следующем: - Можем ли мы получить синхронизацию Service-Worker с паузой в коде, как описано ниже?
- Мы сообщаем процессу синхронизации рабочего процесса «останавливаться на данный момент» в нашем коде, когда пользователь заканчивает свою сессию в приложении.
На данный момент важно, чтобы процесс синхронизации отслеживал все вызовы, которые необходимо обработать, но не обрабатывать ни одно из них. Кроме того, любые дополнительные вызовы синхронизации должны быть просто добавлены в очередь.
- Когда следующий пользователь получит действительный токен OWIN, мы можем сказать, что процесс синхронизации «продолжит, как обычно».
До сих пор мой поисковик не возвращал ничего, что касается этого явно; но большая часть документации подразумевает, что это невозможно.
Кто-нибудь знает наверняка, возможно ли это или нет?
Как долго эти токены живут? «мы разрешаем только один активный сеанс для каждого пользователя» - означает ли это, что он не работает с несколькими вкладками? Как избежать одной и той же проблемы с перекрытием выборки из одной страницы? –
Мы храним маркер в качестве файла cookie-носителя в браузере. Это означает, что один и тот же токен действителен для всех страниц и всех вкладок (если пользователь не закрывает браузер или не выбирает пункт меню «выход из системы»). –
Невозможно ли использовать такое же решение здесь? Поместите маркер в IndexedDB и получите доступ к нему от рабочего. –