【发布时间】:2018-12-14 20:18:40
【问题描述】:
我正在使用 Google Workbox 构建一个渐进式网络应用程序。我已经使用 bgSync 设置了一个服务工作者(在我的构建文件夹中),以便当用户重新连接时我的 POST 请求被推送到队列并发送到我的端点,但是同步事件何时准确发生?
出于开发目的,我使用 Chrome 中包含的“同步”按钮,详见此答案:How to manually trigger a background sync (for testing)?,但这是手动操作,我希望在应用程序启动后立即将请求发送到端点重新联机,但是当我获得连接时,我的请求没有发送,我必须手动单击“同步”按钮才能发生这种情况,它确实工作得很好,但用户不会在真实场景中单击“同步”按钮。
确切地说,我想知道在我的 service-worker 内部是否有办法检测应用程序何时重新联机并强制同步。或者知道同步发生的时间。这是一个 sn-p 供参考(使用 Workbox 3.0.0):
const bgSyncPlugin = new workbox.backgroundSync.Plugin('myQueue', {
callbacks: {
requestWillEnqueue: (storableRequest) => {}, // I show a push notification indicating user is offline
requestWillReplay: (storableRequest) => {},
queueDidReplay: (storableRequestArray) => {} // If I get a response, I show a push notification
}
},
);
workbox.routing.registerRoute(
"https://myapi.com/action",
workbox.strategies.networkOnly({
plugins: [bgSyncPlugin]
}),
'POST'
);
【问题讨论】:
标签: service-worker progressive-web-apps workbox background-sync