增加服务工作线程的生命周期
increase Service Worker life time
我正在尝试使用服务工作者推送通知。使用我自己的服务器发送通知,事件源用于建立连接。打开网页后,服务工作者运行良好。但它在几秒钟后停止。我想要的是运行服务工作者而不会停止。我希望它运行直到打开浏览器。任何人都可以推荐一种方法来做到这一点。?
这是我的服务工作者 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);
});
服务人员的寿命很短,你不能让他们永远运行。
您可以使用共享辅助角色来执行此操作,但它们仅在您的网站打开时运行。
您正在尝试混合推送 API 和事件源。如果使用推送 API,则无需始终保持服务工作线程处于活动状态,只需在推送通知到达时使其执行即可。
请参阅 ServiceWorker Cookbook 上的示例。
当你像这里这样推送时:
self.addEventListener('push',function(event) {
首先要做的是使用 event.waitUntil()
谁接受承诺并延长事件和服务工作者的生存期
self.addEventListener('push',function(event) {
event.waitUntil(<YOUR PROMISE>)
}
这是不可能的,也不是服务工作者的目的。你到底为什么要让它活着?
相关文章:
- 组件生命周期问题/无法处理未定义的问题
- 渲染方法与生命周期方法中的React计算
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- 管理动态磁贴和应用程序生命周期
- 主干网的生命周期.js创建过程中的视图
- 使用Ember中的组件生命周期事件
- 关于Angular 1.5零部件生命周期挂钩
- 更新数据时的React.js生命周期
- 雷杜克斯.从容器组件描述表示组件的生命周期方法
- 增加服务工作线程的生命周期
- 是否有一种自动方法来确定(或查找)库的生命周期结束/支持终止通知
- 如何将请求生命周期事件封装在 happy.js 中
- 使用 Async.parallel 我的参数的生命周期不会超过使用 MongoDB 的 NodeJS 中的异步调用
- 聚合物元素注册和生命周期(创建和准备调用两次)
- E_UNKNOWN beforeCreate 和其他生命周期回调的响应错误
- Aurelia 组件生命周期中的远程服务
- 节点.js简单的 Web 服务器请求生命周期
- 角度引导程序生命周期:在完全加载后运行代码
- 主干提取集合生命周期,从响应设置属性
- JQuery 插件架构,用于定义对象和变量生命周期