增加 Service Worker 的生命周期
increase Service Worker life time
我正在尝试使用服务人员推送通知。
使用我自己的服务器发送通知,eventSource 用于建立连接。
在我打开网页后,Service Worker 完美 运行ning。但它在几秒钟后停止。
我想要的是 运行 service worker 不被停止。我希望它 运行 直到浏览器打开。谁能推荐一种方法来做到这一点。 ?
这是我的 ServiceWorker JS
/**
*
*/
'use strict';
var eventSource2 = new EventSource("Servlet");
console.log('Started', eventSource2);
eventSource2.addEventListener('install', function(event) {
eventSource2.skipWaiting();
console.log('Installed', event);
});
eventSource2.addEventListener('push',function(event) {
console.log(event.data);
var title = event.data;
self.registration.showNotification(title,{
'body' : event.data,
'icon' : 'http://icons.iconarchive.com/icons/designbolts/free-multimedia/1024/iMac-icon.png',
'tag' : 'click',
});
console.log("data from down", event.data);
});
eventSource2.addEventListener('activate', function(event){
console.log('Activated', event);
});
eventSource2.addEventListener('fetch', function(event) {
console.log('Push message', event);
});
这是不可能的,这不是 service-worker 的目的。你到底为什么要让它活着?
Service Worker 的生命周期很短,你不能让他们 运行 永远。
您可以使用共享工作者来执行此操作,但他们只会 运行 如果您的网站是开放的。
您正在尝试混合推送 API 和 EventSource。如果你使用 Push API,你不需要一直让 service worker 保持活动状态,你可以让它在推送通知到达时执行。
当你像这里一样收到推送时:
self.addEventListener('push',function(event) {
首先要做的是使用 event.waitUntil()
接受承诺并延长事件和 serviceworker 的生命周期
self.addEventListener('push',function(event) {
event.waitUntil(<YOUR PROMISE>)
}
我正在尝试使用服务人员推送通知。 使用我自己的服务器发送通知,eventSource 用于建立连接。 在我打开网页后,Service Worker 完美 运行ning。但它在几秒钟后停止。 我想要的是 运行 service worker 不被停止。我希望它 运行 直到浏览器打开。谁能推荐一种方法来做到这一点。 ?
这是我的 ServiceWorker JS
/**
*
*/
'use strict';
var eventSource2 = new EventSource("Servlet");
console.log('Started', eventSource2);
eventSource2.addEventListener('install', function(event) {
eventSource2.skipWaiting();
console.log('Installed', event);
});
eventSource2.addEventListener('push',function(event) {
console.log(event.data);
var title = event.data;
self.registration.showNotification(title,{
'body' : event.data,
'icon' : 'http://icons.iconarchive.com/icons/designbolts/free-multimedia/1024/iMac-icon.png',
'tag' : 'click',
});
console.log("data from down", event.data);
});
eventSource2.addEventListener('activate', function(event){
console.log('Activated', event);
});
eventSource2.addEventListener('fetch', function(event) {
console.log('Push message', event);
});
这是不可能的,这不是 service-worker 的目的。你到底为什么要让它活着?
Service Worker 的生命周期很短,你不能让他们 运行 永远。
您可以使用共享工作者来执行此操作,但他们只会 运行 如果您的网站是开放的。
您正在尝试混合推送 API 和 EventSource。如果你使用 Push API,你不需要一直让 service worker 保持活动状态,你可以让它在推送通知到达时执行。
当你像这里一样收到推送时:
self.addEventListener('push',function(event) {
首先要做的是使用 event.waitUntil()
接受承诺并延长事件和 serviceworker 的生命周期
self.addEventListener('push',function(event) {
event.waitUntil(<YOUR PROMISE>)
}