在 MV3 Chrome 扩展程序中维护持久连接

Ben*_*orn 9 websocket google-chrome-extension chrome-extension-manifest-v3

我正在尝试构建一个 chrome 扩展程序,每当我的服务器上发生某些事件时,它都会更新其徽章 - 在这种情况下,我的服务器正在从 Zoom 接收 webhook,然后通知我的 chrome 扩展程序发生了事件。从那里我的 Chrome 扩展将更新其徽章上的计数器,以显示事件发生。我正在尝试根据 chrome 扩展 Manifest V3 构建它,但我找不到任何有关如何正确执行此操作的信息。

据我了解,在 Manifest V3 中,所有客户端脚本都必须在 Service Worker 中运行。该服务工作人员启动,运行一些代码,然后再次关闭。我计划在我的后台脚本中打开一个 websocket,这在清单 v2 下应该没问题,但我认为你不能再这样做了。

我的问题是:如何在 Chrome 扩展程序中保持连接以接收数据?当我在这种情况下说数据时,我实际上只是指一个通知我的 chrome 扩展更新其徽章上的计数器的事件。

除了在后台保持 websocket 打开之外,还有其他途径吗?我已经研究过诸如 Google Cloud Messaging 之类的东西,但我认为这并不是我想要的用途。

aka*_*ras 2

尝试使用离屏API,它是谷歌不久前推出的。您只需检查该 API 在哪个浏览器版本中可用。

这将使您有机会拥有长期的 WS 连接并与服务工作者进行通信,例如通过runtimeAPI。

编辑:

offscreenAPI 自 Chrome 109 起可用