w3c / push-api

Push API
https://w3c.github.io/push-api/
Other
145 stars 40 forks source link

What is a push subscription associated with? #384

Closed annevk closed 5 days ago

annevk commented 1 month ago

I was trying to make sense of subscribe() but it did something unexpected. It looks at a service worker registration's active worker and uses that to obtain a push subscription. However, very early on in this document we have this description:

Each push subscription is associated with a service worker registration and a service worker registration has at most one push subscription.

What gives?

It does seem like rejection when there's no active worker is intentional: https://github.com/w3c/push-api/pull/230.

It also seems to me that a push subscription is not stored with a service worker as you should be able to replace the service worker and retain the subscription.

There's also some weirdness around "having" a push subscription apparently being known information but "getting" the push subscription requiring a "request" (whatever that is).

mkruisselbrink commented 1 month ago

Yeah, that doesn't seem right. As far as I can tell while having an active worker is indeed intentional, the registration itself is associated with the registration and not tied in any way to any specific version of the service worker within that registration.

saschanaz commented 1 month ago

It also seems to me that a push subscription is not stored with a service worker as you should be able to replace the service worker and retain the subscription.

Probably something related to https://github.com/whatwg/notifications/issues/205 with the same purpose, tied with @mkruisselbrink said above: "SW un-registration should kill the push subscription and shouldn't persist whatever the previous registration had"

So I guess updating SW should be accompanied with a manual update for the subscription too? (I haven't checked whether that's something actually happening or not)

cc @asutherland