【问题标题】:Can I use a websocket connection within a serviceworker to receive notifications while my PWA is closed?我可以在我的 PWA 关闭时使用 serviceworker 中的 websocket 连接来接收通知吗?
【发布时间】:2021-01-05 17:08:50
【问题描述】:

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

鉴于文档,常规的 Push API 是这里建议和首选的解决方案,但我很感兴趣这是否也可以通过 WebSockets 实现,因为我的应用程序将更好地使用由于现有的库我使用的编程语言。

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

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

【问题讨论】:

  • 不,网络套接字需要打开浏览器。另外,服务人员不会拦截 Web 套接字流量。很多人对此感到困惑。 Service Worker 只处理 HTTPS 网络请求。现在触发服务工作者的外部事件是推送、同步和定期同步。哪款 iPhone 都不支持。

标签: websocket progressive-web-apps service-worker


【解决方案1】:

简短的回答,不。

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

然后是运行浏览器的操作系统。它的主要任务是管理资源,例如 CPU 周期和 RAM 内存。是的,它迟早也会试图杀死你。

【讨论】:

  • 所以它基本上是网络推送作为主要支持的库还是我不走运?
  • 为了接收通知,我会说是的,请使用 Push API。你仍然可以使用 websockets 来获得其他好处
  • 非常感谢您的建议,非常感谢。我可能会先使用 Push API,看看它的表现如何,如果我不满意,可能会结合这两种技术
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2020-04-15
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多