有没有办法创建连接超时来激活服务工作者?

时间:2017-01-31 12:27:04

标签: electron chromium service-worker connection-timeout

我使用基于Chromium的Electron来创建离线桌面应用程序。

该应用程序使用远程站点,我们正在使用服务工作程序使站点的某些部分脱机。一切都很好,除了某种情况,我称之为飞机无线状况"。

使用Charles,我将下载带宽限制在100bytes / s。该连接通过webview.loadURL发送,最终在Chromium中调用LoadURLWithParams。问题是它没有失败然后激活服务工作者,就像根本没有连接那样。发送请求后,它会永远等待响应。

我的问题是,如何在一段时间后超时请求并从服务工作者加载所有内容,就像用户真正离线一样?

1 个答案:

答案 0 :(得分:1)

自己编写此代码的另一种方法是使用sw-toolbox库,它为服务工作者提供路由和运行时缓存策略,以及一些用于帮助处理这些高级用例的内置选项。特别是,您需要使用networkTimeoutSeconds parameter来配置在回退到之前缓存的响应之前等待网络响应的时间。

您可以像以下一样使用它:

toolbox.router.get(
  new RegExp('my-api\\.com'),
  toolbox.networkFirst, {
    networkTimeoutSeconds: 10
  }
);

这将配置与GET个请求匹配的路由与包含my-api.com的网址,并应用网络优先策略,该策略将在10秒后自动回退到先前缓存的响应。