electron - 有没有办法创建连接超时来激活服务人员?

标签 electron chromium service-worker connection-timeout

我正在使用基于 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/

相关文章:

javascript - 在 javascript 中通过 D-click 将参数传递给应用程序

ubuntu - 在 ubuntu 上构建 Electron 应用程序失败,错误代码为 'Permission denied'

macos - 设置browserWindow始终位于顶部,即使其他应用也处于全屏状态[Electron,MAC OS]

javascript - 将 Angular 书面扩展迁移到 list V3

microsoft-edge - 如何在 Javascript 中检测 Microsoft Chromium Edge (chredge , edgium)

service-worker - 我的 service worker 什么时候更新?

javascript - Service Worker 无法在 Node js 服务器的离线模式下工作

javascript - 未捕获( promise )错误: Passed function is not well-serializable

javascript - 究竟是什么触发了该 Service Worker 代码的运行?

javascript - 如何在 JavaScript 中访问 Chrome 拼写检查建议