Service Worker:如果由于网络问题获取 POST 失败,则从 SW 内注册同步

问题描述

我使用 Service Worker 将内容文件、图像等)上传到服务器。 在 Service Worker 中,我使用 fetch POST 上传内容。 如果获取 POST 由于网络错误而失败,我想从 Service Worker 内部请求“同步”事件。

我的理解是“同步”只触发一次,然后每次请求因离线而失败时我都必须继续请求同步。

问题是 - 我不知道如何从软件代码请求同步。

软件代码如下:

self.addEventListener('message',aMessage => {
   // invoke fetch in here to upload files
   // Todo: how to register for a sync from here if the fetch fails due to network connection error?
})

任何输入/想法将不胜感激!

我考虑过的一些替代方案:

  1. 我是否应该捕获注册对象,然后将其作为参数作为消息的一部分传递给软件? -> 听起来很hacky。我更愿意使用一些直接的方式来做到这一点。

  2. 我是否应该从主应用程序的软件分派一个事件来请求同步? --> 但是不能保证在调用代码时主应用程序窗口可能处于活动状态。此外,如果代码已经处于“同步”中间并尝试获取 POST 时网络出现故障怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)