【问题标题】:Store client-side data, making it available to a service worker存储客户端数据,使其可供服务人员使用
【发布时间】:2016-03-27 06:42:46
【问题描述】:

在我的 node.js 聊天应用中,我想在离线模式保存聊天数据并在在线时推送通知。基本的聊天应用程序已完成。我正在为服务器代码使用 ws 节点模块。在客户端代码中,我想使用 service worker 来存储离线数据。我做了一些家庭作业https://jakearchibald.com/2014/offline-cookbook/https://ole.michelsen.dk/blog/making-an-offline-webapp-with-service-workers.html,但我想我不明白如何将聊天数据存储在service worker离线数据中。

【问题讨论】:

    标签: offline-caching service-worker


    【解决方案1】:

    曾经我也不得不面对这种类型的问题。所以我所做的,是某种作弊。我在 IndexedDB 中创建一个对象,在其中临时存储每个聊天数据,并在成功将聊天数据发送到服务器后,立即删除我的 IndexedDB 数据。如果聊天数据未能发送到服务器,它不能暂时删除 IndexedDB 数据。当服务器可以接收聊天数据时,首先检查IndexedDB数据并发送到保存的聊天数据(如果有的话)。

    注意:这不是准确的解决方案,甚至没有接近。

    【讨论】:

      【解决方案2】:

      IndexedDB 是一个通用数据库,在服务工作者和主网页上下文中都可以在客户端使用。我建议使用它来存储聊天消息等数据。

      有许多库封装了 IndexedDB 以使界面更友好。相对较新的 idb 具有提供基于 Promise 的接口的优势,这在从 Service Worker 使用 IndexedDB 时会派上用场,因为很多异步代码已经是基于 Promise 的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多