Passa al contenuto principale

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.