好的,我们有一个离线的第一个应用程序,可以调用后端API。
我们希望在应用程序脱机时使用Service Worker的同步来缓存对API的调用,然后在浏览器重新联机时处理这些调用。
复杂的是,当我们进行API调用时,我们需要有一个有效的OWIN令牌。
有一个解决方案outlined here表示我们可以在需要时获取令牌;但这对我们的应用程序不起作用,因为我们每个用户只允许一个活动会话。 因此,如果我们在代码中获得令牌,我们就有可能踢出当前在应用程序上忙碌的真实用户。
所以问题是: - 我们可以让服务工作者同步在代码中暂停,如下所述吗?
此时,同步过程必须跟踪需要处理的所有调用,但不处理任何调用。此外,任何其他同步调用都应该“添加到队列中”。
到目前为止,我的Google搜索没有返回任何明确处理此内容的内容;但大多数文件都暗示这是不可能的。
有没有人确定这是否可行?
答案 0 :(得分:1)
好的,所以从上面的讨论,以及其他离线讨论; 这个问题的简单回答是" No" - 截至2017年1月13日(是的,星期五);您无法暂停服务工作者同步。
所以作为一种解决方法;我们可以找到两种方法
(两者都涉及在某种程度上重新考虑解决方案)。
2.1接听电话;这些可以通过服务工作者的标准缓存机制进行处理。
2.2可以忽略响应的非Get调用。这些可以添加到IndexedDB表中,并且可以在用户连接到数据库之后启动web-worker来处理它们。
2.3需要响应的非Get调用。这些事情不会经常发生;因此,对于每种情况,都要为在线/离线情况编写单独的代码路径。
关于它;选项2适用于我当前的项目。可能存在选项2仍然不可行的项目。