首页 > 解决方案 > 检测服务工作者中的客户端断开连接

问题描述

是否有可以在 serviceworker 中使用的事件或机制来检测客户端何时断开连接,即self.clients.matchAll()中的一个客户端实例发生了变化?

鉴于在两个或多个打开的选项卡中运行的应用程序示例,我将如何继续通知其他选项卡其他选项卡之一已关闭?

我当前的解决方案是在 serviceworker 中维护一个客户端映射,然后在 serviceworker 的其他常用功能中运行一个清理功能,但鉴于 serviceworker 的共享性质,我无法在没有实质性性能损失的情况下扩展此解决方案。

标签: javascriptservice-worker

解决方案


到目前为止我发现了什么:

addEventListener('beforeunload', function (e) {
  if (!e.defaultPrevented) {
    navigator.serviceWorker.controller.postMessage("client_unloaded")
  }
})

推荐阅读