我有一个聊天网络应用程序,我希望它能脱机工作。为此,我使用渐进式Web应用程序功能(服务工作者)来使用缓存来获取shell应用程序和已加载的消息。
我想要做的是能够在我离线时发布消息并让服务工作者处理连接问题(即:将消息保留在某处,直到离线位置和我们一旦离线在线发送帖子留言)。
我想使用Service Worker,因为如果用户在发布没有连接的消息后离开了Web应用程序,我也想发送消息。
用于此目的的最佳API是什么?
我看到了background sync API,但它不是标准的,它似乎不会更新近2年。
如果有办法以客户端(网络应用程序)完全不知道这种机制的方式这样做,那就太酷了。
我的意思是我希望我的应用程序只是做一个
fetch("/message", {method : "post", body : {content : "hey there"})
然后服务工作者只是截取提取,如果我们在线,那么它只是发送提取,但如果我们离线它"等待"连接再次启动,然后发送帖子。
我想知道服务工作者中是否有可用的事件监听器,当连接从离线变为在线时将被激活。这样我就可以在离线时将请求存储在indexDB中,然后在线时发送帖子。
我看到了navigator.onLine
,但这不是一个事件:(
答案 0 :(得分:1)
根据此post,您可以使用Service Worker在后台运行应用程序,通过其push
事件处理程序(通过传入的推送消息触发),或通过其sync
事件处理程序(由先前失败的任务的自动重放触发)。
您可以查看Offline Storage for Progressive Web Apps文档以离线存储数据:
您可以使用Cache API
缓存静态资源,编写应用程序shell(JS / CSS / HTML文件),并填写IndexedDB
的离线页面数据。