我正在使用 Google Workbox 构建一个渐进式网络应用程序。我已经使用 bgSync 设置了一个服务工作者(在我的构建文件夹中),以便当用户重新连接时我的 POST 请求被推送到队列并发送到我的端点,但是同步事件何时准确发生?
出于开发目的,我使用 Chrome 中包含的“同步”按钮,如以下答案所述:如何手动触发后台同步(用于测试)?,但这是手动的,我希望应用程序重新联机后立即将请求发送到端点,但是当我获得连接时,我的请求没有发送,我必须手动单击“同步”按钮会发生,并且它确实工作得很好,但用户不会在真实场景中单击“同步”按钮。
准确地说,我想知道在我的服务工作者内部是否有办法检测应用程序何时重新上线,并强制同步。或者知道同步发生的时间。这是一个供参考的片段(使用 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'
);