问题标签 [background-sync]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 连接恢复时如何使用服务工作者(Workbox)处理 AJAX 响应
我正在使用 Vue CLI 3 PWA 插件构建 PWA,但我不确定如何处理离线时进行的 AJAX 调用的响应。
我所拥有的基本上是来自 Workbox 文档的示例代码......
AJAX 只是一个基本get()
的 Axios,在加载存储和测试突变时调用
该请求已成功重播,但我不知道如何处理它,而且我无法找到使用workbox.backgroundSync.Queue
.
就getUsername()
目前而言,请求失败了,但是我如何让调用函数从中断的地方继续?
我认为不需要定期检查队列中的请求以“手动”重新触发(而不是通过自动重播)。我将如何使用队列类从重播请求中获取结果并设置用户名属性?
vue.js - 在 Vue 中与 Workbox 进行后台同步
我正在尝试在一个非常简单的 Vue 示例应用程序中使用 WorkBox 发出后台同步请求。我修改了我的代码很长时间,但我没有找到解决方案,或者我的代码有问题。
服务人员注册良好,当我发出 ajax 请求时,后台同步被激活。
VUE
Vue.CONFIG.JS
这些是触发事件时来自 DevTools 的屏幕截图。
当网络断开连接时,我在控制台中收到此错误。我不确定后台同步是否正常...
background-sync 在 indexDB 选项卡中注册
最后是网络选项卡。在那里我们看到 API 调用很好,因为当网络返回时,它会进行调用,但应用程序中没有其他任何事情发生,并且旧数据不会被新数据替换:/
有谁能够帮我?我在找那个,但我没有找到任何东西......
谢谢!
service-worker - 重启浏览器后没有后台同步
我正在使用服务人员实现 PWA,在用户离线时利用后台同步和 IndexedDB 上传图像。
所以它正在工作!在上传图像时离线时,nativeFile 被推送到 IndexedDB,并为后台同步注册一个唯一标签。将网络上线后,后台同步调用我的函数将文件从 indexedDB 上传到服务器。当我的浏览器打开时会发生这种情况。
但是,在离线上传的情况下。然后重启浏览器上线,打开后不触发后台同步。
这就是所谓的后台同步工作方式吗?只有在浏览器打开时?还是我做错了什么?
service-worker - 如何从服务人员检索存储在缓存中的 JSON 对象?
我有一个 Json 对象存储在缓存中,请在此处查看我的缓存。
我想从我的服务人员那里检索 json 值
有没有办法做到这一点?在控制台中探索响应我只能看到属性标题,好的,状态,类型,url,正文,但我无法在任何地方找到我的 json 值。
我将不胜感激任何建议。
谢谢
service-worker - Workbox 后台同步在移动设备上不起作用
更新:原来它正在工作,我只需要手动重新启动服务工作者即可再次触发请求。另一个帖子中的持续问题。
我有一个用 Angular 编写的应用程序前端,旨在用于我们家周围的 iPad。后端是在常规网络主机上运行的 PHP 构建的 api。当我使用 Workbox 注册服务人员时,它在桌面上运行良好。我能够完美地在桌面 Chrome 上使用后台同步。当我转移到适用于 Android 的 Chrome 或适用于 iOS 的 Chrome 时,服务工作者似乎无法正常工作。
我已经通过 android 上的 usb-debugging 进行了一些调试,它没有显示用于 workbox-background-sync 的 indexdb 数据库,但它确实用于预缓存。有任何想法吗?
服务工作者.js:
index.html(主项目 index.html 不是组件):
角.json:
我使用“npm run dist”构建,然后将 dist/ 文件夹放在网络主机上。
如前所述,处理数据库查询的 API 是用 PHP 编写的。它位于同一网络主机上的一个文件夹中,名为 api/
service-worker - Service Worker:浏览器何时再次同步?
我正在使用 Google Workbox 构建一个渐进式网络应用程序。我已经使用 bgSync 设置了一个服务工作者(在我的构建文件夹中),以便当用户重新连接时我的 POST 请求被推送到队列并发送到我的端点,但是同步事件何时准确发生?
出于开发目的,我使用 Chrome 中包含的“同步”按钮,如以下答案所述:如何手动触发后台同步(用于测试)?,但这是手动的,我希望应用程序重新联机后立即将请求发送到端点,但是当我获得连接时,我的请求没有发送,我必须手动单击“同步”按钮会发生,并且它确实工作得很好,但用户不会在真实场景中单击“同步”按钮。
准确地说,我想知道在我的服务工作者内部是否有办法检测应用程序何时重新上线,并强制同步。或者知道同步发生的时间。这是一个供参考的片段(使用 Workbox 3.0.0):
angular - 后台同步不会自动触发
好的,所以我正在尝试制作一个使用后台同步的 Angular 7 PWA。
我可以从 Chromium 的开发工具中触发同步事件,但是当我移除以太网电缆并将其重新插入时它不会触发。
我最初认为这是我的服务工作者文件很奇怪,所以我添加了这个:https ://stackoverflow.com/a/50414028/9978023 ,奇怪的是它在 Firefox 中有效,但在 Chromium 中无效。所以使用它我可以触发同步事件要调用的相同函数。但这不是一个很好的解决方案。
服务工作者.js
我究竟做错了什么?当我重新连接到 Internet 时,为什么没有触发同步事件?
workbox - Workbox 4.1 backgroundSync:队列和插件
我需要先获取一个令牌,然后才能继续进行后台同步,然后我将循环队列,使用添加到标头的令牌构建一个新请求并发送它。
我正在使用插件注册离线提交的数据,它正在workbox-background-sync
>下注册requests
。循环while (entry = await queue.shiftRequest())
显然没有结果,因为我无法进入循环,所以我肯定做错了。我应该将代码从插件移动到队列(因为我需要shiftRequest())吗?如果是这样,我如何让我的路由在 IndexedDB 中注册内容以进行后台同步?
这就是我正在尝试的:
service-worker - 在 lastChance boolean 为 true 后,workbox backgroundSync 队列中的请求会发生什么?
我看到一个问题,在 3 个不成功的请求后,我的请求从 workbox.backgroundSync.Queue 队列中弹出。当 lastChance 标志设置为 true 时,在 3 个不成功的同步请求后,我也无法找到有关预期行为的可靠文档。
接下来应该发生什么?请求是否应该保留在队列中,可以做些什么来最终触发重播?
browser - 如果后台同步关闭,StackExchange 如何将更改传递到页面?
我碰巧关闭了浏览器上的后台同步,StackOverflow 上的页面发生的更改像往常一样出现在顶部的页面上,你知道“已对这篇文章进行了编辑”横幅最佳。
(已编辑)这让我想知道两件事:-
即使后台同步关闭,StackExchange 如何将有关页面上发生的更改的信息发送给最终用户?
当我在网络浏览器中关闭后台同步时会发生什么?它是否完全阻止了对服务器的任何请求或其他问题?
注意:我的浏览器是 32 位 Windows 7 上的 Google Chrome 74.0 版。