我一直在尝试将Workbox Broadcast Update与Workbox Precaching结合使用,以在安装过程中向用户显示进度反馈。
这是在Keep track of progress while precaching assets with the Workbox
一个可能过分希望的帖子之后我使用带有InjectManifest的workbox-webpack-plugin进行编译,并在窗口(版本5.1.2)中使用workbox窗口
在我的服务人员中:
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开发日志(在开发中编译时),但是这些总是倾向于急于“控制”,而不是在我需要的安装过程中出现。
我在浪费时间吗?
另一种选择是不进行预缓存,而是进行后缓存,但是我必须自己将其全部挂接起来,而不是仅凭单行precacheAndRoute(self.__WB_MANIFEST);
在使用this approach进行预缓存期间,我设法使用addPlugins使自己的插件响应请求和缓存事件,因为我第一次尝试使用addPlugins似乎没有在预缓存中使用。 仍然没有解决如何通过serviceworker插件将事件报告回窗口的问题