我们正在使用BackgroundSyncPlugin,从日志中可以明显看出浏览器触发了后台同步事件,但我不确定浏览器是如何做到这一点的。
根据文档,https://developer.chrome.com/docs/workbox/modules/workbox-background-sync/,如果兼容,浏览器会自动调用BackgroundSync API。但是有没有一种方法可以让我们检查浏览器设置以了解同步事件的触发方式和时间?
如果浏览器使用指数退避,是否有可能请求永远不会同步到服务器并且浏览器在某些有限的尝试后停止重放请求?
我们能否通过代码自动触发同步事件,例如:当检测到网络连接时,而无需重新启动服务工作线程?
是的,Background Sync API 提供了一个
sync
事件,当使用 SyncManager
注册事件的页面(或工作线程)正在运行且网络连接可用时,该事件就会触发。
要监听此事件,您可以使用
addEventListener()
方法或在服务工作线程注册上设置事件处理程序属性。
例如:
self.addEventListener('sync', (event) => {
if (event.tag === 'sync-messages') {
event.waitUntil(doSomething());
}
});