0

我有一个聊天网络应用程序,我希望它可以离线工作。为此,我使用渐进式 Web 应用程序功能(Service Workers)来使用缓存来获取 shell 应用程序和已加载的消息。

我想要做的是能够在我离线时发布消息并让服务人员处理连接问题(即:将消息保存在某处直到离线并且一旦我们在线发送帖子消息)。

我想使用 Service Worker,因为如果用户在发布没有连接的消息后离开 Web 应用程序,我也想发送消息。

为此使用的最佳 API 是什么?

我看到了后台同步API,但它不是标准的,而且似乎近 2 年都没有更新。


如果有一种方法可以让客户端(Web 应用程序)完全不知道这种机制,那就太好了。

我的意思是我希望我的应用程序只做一个 fetch("/message", {method : "post", body : {content : "hey there"}) 然后服务工作者只是拦截提取,如果我们在线那么它只是发送提取,但如果我们离线它“等待”连接建立再次,然后发送帖子。


我想知道服务工作者中是否有一个可用的事件监听器,当连接从离线变为在线时,它将被激活。这样我应该能够在离线时将请求存储在 indexDB 中,然后在在线时发送帖子。我看到了,navigator.onLine但这不是一个事件:(

4

1 回答 1

1

Based from this post, you may use a Service Worker in running the app in the background either via its push event handler (triggered via an incoming push message), or via its sync event handler (triggered by an automatic replay of a task that previously failed).

You may check the Offline Storage for Progressive Web Apps documentation for storing data offline:

You can cache static resources, composing your application shell (JS/CSS/HTML files) using the Cache API and fill in the offline page data from IndexedDB.

于 2017-10-02T14:55:53.847 回答