service worker 可以拦截来自 web worker 的 http 请求吗?

Can a service worker intercept http requests coming from a web worker?

我知道 service worker 可以拦截来自 UI/Main 线程的 http 请求。我想知道服务工作者是否可以拦截来自工作线程(网络工作者)的 http 请求。这样做的原因是为了在 Tab/Browser 最终被用户或操作系统破坏或停止时启用重试和恢复。

是的,new Worker(workerSrcUrl) 创建的东西可以是 service worker 的客户端,service worker 的 fetch 事件侦听器可以响应 Worker 内部发起的网络请求。

您应该注意以下几点:

  • 目前计划在 Chrome/Edge 93 中进行一项更改,以解决围绕 Clients.matchAll({type: 'worker'}) 的一些不合规行为以及范围界定的应用方式。可以在 status entry.

    中找到更多详细信息
  • A Worker 实际上不能比启动它的选项卡或浏览器更有效,因此创建 Worker 不会 允许您 运行 代码在创建它的浏览器选项卡的生命周期之外继续。