Javascript 向服务工作人员发送消息以跳过等待
如何向服务人员发送消息以跳过等待?服务工作者是使用以下处理程序定义的Javascript 向服务工作人员发送消息以跳过等待,javascript,service-worker,Javascript,Service Worker,如何向服务人员发送消息以跳过等待?服务工作者是使用以下处理程序定义的 self.addEventListener('message', (event) => { if (event.data && event.data.type === 'SKIP_WAITING') { self.skipWaiting(); } }); 谢谢, 路易斯下面是一个关于我在一个项目中如何做到这一点的例子 navigator.serviceWorker .register
self.addEventListener('message', (event) => {
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
}
});
谢谢,
路易斯下面是一个关于我在一个项目中如何做到这一点的例子
navigator.serviceWorker
.register(swUrl)
.then(registration => {
this.registration = registration;
config.onRegistration();
registration.onupdatefound = () => {
const installingWorker = registration.installing;
if (installingWorker == null) {
return;
}
config.onUpdateFound();
installingWorker.onstatechange = () => {
if (installingWorker.state === 'installed') {
if (navigator.serviceWorker.controller) {
registration.waiting.postMessage('skipWaiting');
config.onUpdateInstalled();
}
} else if (installingWorker.state === 'activated') {
config.onActivated();
}
};
};
})
非常感谢。问题:你是从哪里得到配置的?此处使用config.onRegistration()和此处使用config.onUpdateInstalled();我正在使用CreateReact应用程序,虽然消息是按照Joel的代码发送的,但服务人员仍处于等待状态。这是一种有趣的方法。我没有想过,一旦安装了新的服务人员,可能会进行一系列的验证检查,以确定激活是否安全。您需要在UI代码中捕获来自新服务人员的消息,以便首先启动诊断。一旦事情过去,您就可以通过向服务人员发送消息来触发激活。然而,我打赌你不会走得太远,因为客户端测试将依赖于在客户端加载新资产(HTML、JS、CSS等),所以测试很可能不会通过。