我正在创建一个项目,其中有一个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);
});
答案 0 :(得分:0)
install
事件仅在»安装«时触发,因此,如果您离开该页面并重新打开它,则已经已安装服务工作人员,这就是为什么它不再开始再次请求服务器的原因。
如果您希望您的服务工作 r(重新)开始页面访问,则可以向其发送消息,或将该活动绑定到某个请求,例如,/
这个案例。因此,只要浏览器加载了页面索引,它就会开始轮询。但是,如果页面已经打开,则应该显示一条消息。
解决您问题的»右«方法是Background-Sync,但据我所知,它是poorly supported。因此,您必须解决该限制。