2. Overview
2. Overview
Il modello generale include tre attori: user agent, push service e server applicativo.
+-------+ +--------------+ +-------------+
| UA | | Push Service | | Application |
+-------+ +--------------+ | Server |
| | +-------------+
| Subscribe | |
|--------------------->| |
| Monitor | |
|<====================>| |
| | |
| Distribute Push Resource |
|-------------------------------------------->|
| | |
: : :
| | Push Message |
| Push Message |<---------------------|
|<---------------------| |
| | |
Figura 1: architettura WebPush
All'inizio l'user agent crea un nuovo abbonamento e lo distribuisce al server applicativo. L'abbonamento è la base di tutte le interazioni future. Il server applicativo lo usa per inviare messaggi al push service; l'user agent per monitorare i messaggi in arrivo.
Per migliorare il controllo dell'autorizzazione, un abbonamento è modellato come due risorse:
-
subscription resource: ricevere messaggi ed eliminare l'abbonamento; privata all'user agent.
-
push resource: inviare messaggi all'abbonamento; pubblica e condivisa col server applicativo.
Ci si aspetta un abbonamento unico per applicazione, ma il protocollo non impone cardinalità. Più abbonamenti o condivisione sono possibili, con implicazioni di sicurezza e privacy.
Gli abbonamenti hanno vita limitata e possono essere terminati dal servizio o dall'user agent in qualsiasi momento. Entrambi devono gestire i cambi di stato.
2.1. HTTP Resources
Il protocollo usa risorse HTTP [RFC7230] e relazioni di link [RFC5988]:
push service: crea abbonamenti (sezione 4); URL configurato nell'user agent.
push message subscription: lettura e cancellazione; ricezione messaggi (sezione 6); esattamente una push resource associata.
push message subscription set: accesso a un insieme di abbonamenti; ricezione per tutti (sezione 6.1); relazione urn:ietf:params:push:set.
push: richiesta di consegna (5); relazione urn:ietf:params:push.
push message: risorsa creata dal servizio per messaggi accettati (5); DELETE dall'user agent per acknowledgment (6.2).
receipt subscription: conferme di consegna (5.1); relazione urn:ietf:params:push:receipt.