微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。