当我的 PWA 关闭时,我可以在 serviceworker 中使用 websocket 连接来接收通知吗?

Can I use a websocket connection within a serviceworker to receive notifications while my PWA is closed?

我想知道是否可以在 serviceworker.js 的边界内托管 websocket 连接,以便在我的 PWA 关闭时接收通知。

鉴于文档,常规 Push API 是这里推荐的首选解决方案,但我想知道这是否也可以通过 WebSockets 实现,因为我的应用程序使用起来会更好由于我使用的编程语言的现有库。

此外,websockets 可以让我轻松了解我的用户是否或何时在线/离线。

那么,这在 serviceworker.js 中是否可行,或者在某些情况下它会失去连接吗?

简答,没有。

Service Worker 在某种程度上是网页的线程。网页(通常)位于浏览器的选项卡中(pwa 也由浏览器引擎管理)。如今浏览器正朝着性能和更低内存占用的方向发展(想想移动设备)。因此,浏览器会在它认为可以时尽快终止(或休眠)您的页面,因为您没有使用您未查看的 pege。是的,websocket 会给你一些相对于普通页面的优先级,但不是那么多。

然后是OS运行浏览器。它的主要任务是管理资源,例如 CPU 周期和 RAM 内存。是的,它迟早会想杀了你。