有关保持 Service Worker 推送订阅同步的问题

Ale*_*ant 3 firefox google-chrome service-worker web-push push-api

我读过推送订阅可能会导致浏览器和推送服务之间不同步。

我见过两种补救措施,两者看起来都是非标准的:

  1. ServiceWorkerGlobalScope.onpushsubscriptionchange
  2. GCM 发送响应,在这里提到在这里详细说明
    • 可以理解的不标准

我认为任何应用程序都应该处理这两点,在这些点上订阅可以被识别为不同步(以及任何/全部)。

问题:

  1. 一般来说,应用程序是否总是只有两个区域才能意识到订阅不同步的情况?(1.服务工作者事件2.推送服务响应)似乎合理,寻求确认
  2. ServiceWorkerGlobalScope.onpushsubscriptionchange 事件(或类似事件)是否会成为权威标准
  3. 代替服务工作线程事件标准,为什么不只保留预期的订阅端点(在客户端状态),并且每当您查询 PushManager 的订阅时,检查它是否不同步(与预期不同)?

Jef*_*ick 5

pushsubscriptionchange事件被记录为Push API 规范的一部分。这应该被认为是权威的,并且它提到onpushsubscriptionchange作为的一部分被公开ServiceWorkerGlobalScope

我不知道pushsubscriptionchange在撰写本文时是否在所有支持 Push API 的浏览器中都会触发事件,但我相信总体思路是它是您描述的用例的(最终)解决方案。