我正在使用基于 Chromium 的 Electron 创建离线桌面应用程序。
该应用程序使用远程站点,我们正在使用服务 worker 来离线部分站点。一切都很好,除了我称之为“飞机 wifi 情况”的某种情况。
使用 Charles,我将下载带宽限制为 100bytes/s。连接通过 webview.loadURL
发送最终调用 LoadURLWithParams
在 Chrome 。问题是它不会失败然后激活服务 worker ,就像根本没有连接一样。一旦发送请求,它将永远等待响应。
我的问题是,如何在一定时间后使请求超时并从服务 worker 加载所有内容,就好像用户真正离线一样?
最佳答案
自己编写此内容的另一种方法是使用 sw-toolbox
库,它为服务 worker 提供路由和运行时缓存策略,以及一些用于帮助处理这些高级用例的内置选项。特别是,您会想使用 networkTimeoutSeconds
parameter配置在回退到先前缓存的响应之前等待网络响应的时间量。
你可以像下面这样使用它:
toolbox.router.get(
new RegExp('my-api\\.com'),
toolbox.networkFirst, {
networkTimeoutSeconds: 10
}
);
这将配置匹配
GET
的路由URL 包含 my-api.com
的请求,并应用了网络优先策略,该策略将在 10 秒后自动回退到先前缓存的响应。
关于electron - 有没有办法创建连接超时来激活服务人员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957587/