无限循环中的ServiceWorker

时间:2018-12-03 08:34:02

标签: javascript service-worker

我正在创建一个项目,其中有一个serviceWorker,每 2 秒向php中的API发送一个请求,如果答案为"hi",则会显示一条通知但是如果您关闭浏览器并重新打开或花费1分钟左右 serviceWorker 停止。

即使关闭页面也可以使用,但仅在我刚才所说的 1 分钟内有效。有谁知道如何使 serviceWorker 不停止或至少持续更长的时间?

代码:

self.addEventListener('install', function(event) {
  setInterval(() => {
    fetch('teste.php').then(function(response) {
      return response.text();
    }).then(function(data) {
      var options = {
        body: 'Ja gastaste 4GB do teu tarifario, mas va ainda tens 1GB',
        icon: 'https://cdn130.picsart.com/274112228042211.png?r1024x1024',
        vibrate: [100, 50, 100]
      };
      if (data == "oi") {
        if (Notification.permission == 'granted') {
          return self.registration.showNotification('IMM | Limite de internet', options);
        }
      }
    });
  }, 2000);
});

1 个答案:

答案 0 :(得分:0)

install事件仅在»安装«时触发,因此,如果您离开该页面并重新打开它,则已经已安装服务工作人员,这就是为什么它不再开始再次请求服务器的原因。

如果您希望您的服务工作 r(重新)开始页面访问,则可以向其发送消息,或将该活动绑定到某个请求,例如,/这个案例。因此,只要浏览器加载了页面索引,它就会开始轮询。但是,如果页面已经打开,则应该显示一条消息。

解决您问题的»«方法是Background-Sync,但据我所知,它是poorly supported。因此,您必须解决该限制。