我有一个聊天网络应用程序,我希望它脱机工作。为此,我使用渐进式Web应用程序功能(服务工作者)使用缓存来获取Shell应用程序和已加载的消息。
我要做的是在离线时能够发出发布消息,让服务人员处理连接问题(即:保持消息在某处,直到我们在线偏离,一旦我们在线发送,帖子消息)。
我想使用服务工作者,因为如果用户在没有连接的情况下发布消息后,我也想发送消息。
最佳使用的API是什么?
我看到了背景同步API,但它不是标准配置,并且似乎在将近2年的时间内都没有更新。
如果有一种方法可以以某种方式(Web应用程序)完全不知道这种机制很酷。
我的意思是我想要我的应用程序做一个 fetch("/message", {method : "post", body : {content : "hey there"})
然后,服务工作者只是拦截了获取,如果我们在线,那就是发送提取,但是如果我们偏离线路,请"等待"连接再次启动,然后发送帖子。
我想知道是否有服务工作者中可用的事件侦听器,当连接从离线变为在线时会被激活。这样,我应该能够在离线时将请求存储在indexDB中,然后在线时发送帖子。我看到了navigator.onLine
,但这不是事件:(
基于这篇文章,您可以通过其push
事件处理程序在后台运行该应用程序(通过传入的推动消息触发),或者通过其sync
Event Handler进行操作。(由以前失败的任务自动重播触发)。
您可以检查离线存储中的渐进式Web应用程序文档以脱机存储数据:
- 对于URL可寻址资源,请使用缓存API (服务工作者的一部分)。
- 对于所有其他数据,请使用 indexeddb (带有承诺包装器)。
您可以使用Cache API
缓存静态资源,构成应用程序壳(JS/CSS/HTML文件),然后填写IndexedDB
的离线页面数据。