Трансляция сообщений от обслуживающего персонала во время предварительного кэширования - PullRequest
0 голосов
/ 09 мая 2020

Я пытался использовать 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, хотя

...