问题描述
我使用 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?
})
任何输入/想法将不胜感激!
我考虑过的一些替代方案:
-
我是否应该捕获注册对象,然后将其作为参数作为消息的一部分传递给软件? -> 听起来很hacky。我更愿意使用一些直接的方式来做到这一点。
-
我是否应该从主应用程序的软件分派一个事件来请求同步? --> 但是不能保证在调用此代码时主应用程序窗口可能处于活动状态。此外,如果代码已经处于“同步”中间并尝试获取 POST 时网络出现故障怎么办?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)