Я пытался использовать Workbox Broadcast Update вместе с Workbox Precaching , чтобы показать обратную связь с пользователем о ходе установки.
Это после, возможно, чрезмерно обнадеживающий пост здесь Следите за прогрессом при предварительном кэшировании ресурсов с помощью Workbox
Я использую плагин workbox-webpack с InjectManifest для компиляции и окно рабочего окна в окне (версия 5.1.2)
В моем обслуживающем работнике:
import {BroadcastUpdatePlugin} from 'workbox-broadcast-update';
import {precacheAndRoute, addPlugins} from 'workbox-precaching';
addPlugins([new BroadcastUpdatePlugin()])
precacheAndRoute(self.__WB_MANIFEST);
В моем оконном коде я пробовал несколько вариантов этого
const wb = new Workbox("/sw.js");
navigator.serviceWorker.onmessage = (e) => {
console.log(`SUCCESS!!!`, e);
}
wb.addEventListener('message', (event) => {
console.log(`SUCCESS`, event);
});
wb.register();
Я не уверен, что это когда-либо сработает, из-за того, что сообщения передаются в режиме предварительного кэширования, а обслуживающий персонал не контролирует. Я действительно вижу множество журналов разработчиков Workbox (когда они скомпилированы в процессе разработки), но они всегда, как правило, появляются в ru sh при «контроле», а не во время установки, что мне нужно.
Я трачу зря мое время?
Альтернативой является не предварительное кэширование, а пост-кеширование, но мне придется подключить все это самому, а не просто однострочно precacheAndRoute(self.__WB_MANIFEST);
У меня есть удалось получить мой собственный плагин, отвечающий на запросы и события кеширования во время предварительного кэширования с помощью , этот подход , используя addPlugins, как я пытался сначала, похоже, не использовался в предварительном кешировании. Все еще не решено, как сообщить о событиях в окно из плагина serviceworker, хотя