gpt4 book ai didi

html - 我可以使用代码暂停 ServiceWorker 同步吗?

转载 作者:可可西里 更新时间:2023-11-01 13:46:36 25 4
gpt4 key购买 nike

好的,所以我们有一个调用后端 API 的离线第一个应用程序。

我们希望在应用程序离线时使用 Service Worker 的同步来缓存对 API 的调用,然后在浏览器重新在线时处理这些调用。

复杂的是我们在进行 API 调用时需要有一个有效的 OWIN token 。

有一个解决方案outlined here那就是说我们可以在需要时获得 token ;但这对我们的应用程序不起作用,因为我们只允许每个用户有一个事件 session 。因此,如果我们在代码中获得 token ,我们就有可能踢出当前正忙于该应用程序的现实世界用户。

所以问题是:- 我们能否让 Service-Worker 同步在代码中暂停,如下所述?

  1. 当用户结束他们在应用程序中的 session 时,我们在我们的代码中告诉服务 worker 同步进程“暂时停止”。

在这一点上,重要的是同步过程要跟踪所有需要处理的调用,但不要处理其中任何一个。此外,任何额外的同步调用都应该“添加到队列中”。

  1. 当下一个用户获得有效的 OWIN token 时,我们可以告诉同步过程“照常继续”。

到目前为止,我的谷歌搜索没有返回任何明确处理此问题的内容;但大多数文档都暗示这是不可能的。

有谁知道这是否可能?

最佳答案

好的,所以从上面的讨论和其他线下讨论;这个问题的简单答案是“否”——截至 2017 年 1 月 13 日(是的,今天是星期五);您不能暂停服务 worker 同步。

因此作为一种解决方法;我们可以找到两种方法

(两者都在某种程度上涉及对解决方案的重新思考)。

  1. 如果可能,从您的同步代码中获取新的 OWIN 身份验证 token 。
  2. 如果 1 不可能,则将您的 API 调用分为 3 类。

2.1 接电话;这些可以通过 service-worker 的标准缓存机制进行处理。

2.2 可以忽略响应的非 Get 调用。这些可以添加到 IndexedDB 表中,并且可以在用户连接到数据库后启动网络 worker 来处理它们。

2.3 需要响应的非 Get 调用。这些不会经常发生;因此,对于每种情况,为在线/离线情况编写单独的代码路径。

就是这样;选项 2 适用于我当前的项目。可能存在选项 2 仍然不可行的项目。

关于html - 我可以使用代码暂停 ServiceWorker 同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41567792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com