在预缓存期间从服务工作者广播的消息

时间:2020-05-09 05:29:04

标签: workbox workbox-webpack-plugin workbox-window

我一直在尝试将Workbox Broadcast UpdateWorkbox 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插件将事件报告回窗口的问题

0 个答案:

没有答案