有一个带有 WebSocket 的 PWA 应用程序。当用户在线时,套接字负责更新数据。这没有问题。但是在网络丢失/关闭选项卡后,该数据的同步存在问题。如果在Windows上我可以监视网络,那么在同一个罂粟上,根据控制台判断,即使盖子关闭,也会时不时地发生与网络的连接(这已经使任务变得复杂)。因此,正确定义最后在线已经很困难了。对于离线选项卡,我在本地存储中创建条目,然后在其上进行同步。
谁能建议在哪里寻找同步 PWA 应用程序的正确方法?也许是一本书或文章的链接。
有一个带有 WebSocket 的 PWA 应用程序。当用户在线时,套接字负责更新数据。这没有问题。但是在网络丢失/关闭选项卡后,该数据的同步存在问题。如果在Windows上我可以监视网络,那么在同一个罂粟上,根据控制台判断,即使盖子关闭,也会时不时地发生与网络的连接(这已经使任务变得复杂)。因此,正确定义最后在线已经很困难了。对于离线选项卡,我在本地存储中创建条目,然后在其上进行同步。
谁能建议在哪里寻找同步 PWA 应用程序的正确方法?也许是一本书或文章的链接。
要在连接丢失后同步 PWA 应用程序中的数据,您可以使用以下方法:
1) Service Workers - 允许您拦截请求并离线访问缓存或 IndexedDB。您可以在 Service Worker 中实现同步逻辑。
2)IndexedDB——客户端的数据存储。可以将数据从socket保存到IndexedDB,然后与服务器同步。
3)后台同步 API - 允许在出现连接时延迟同步数据。
4) Pattern Optimistic UI - 立即显示本地更改,并在后台同步。
有用的资源:
https://developer.mozilla.org/en/docs/Web/API/Service_Worker_API
https://developers.google.com/web/updates/2015/12/background-sync
https://web.dev/offline-cookbook/
关键思想:使用Service Workers和IndexedDB进行离线逻辑,使用Background Sync进行延迟同步,使用Optimistic UI以免阻塞界面。
希望能帮助到你