Aller au contenu principal

4. Subscribing for Push Messages

4. Subscribing for Push Messages

Le user agent envoie une requête POST vers la ressource du service push configurée pour créer un abonnement.

POST /subscribe HTTP/1.1
Host: push.example.net

Une réponse 201 (Created) indique que l'abonnement a été créé. L'URI de la ressource d'abonnement MUST être renvoyée dans le champ Location.

Le service push MUST fournir l'URI de la ressource push dans une relation de lien de type urn:ietf:params:push.

Une méthode propre à l'application distribue l'URI push au serveur d'application. La confidentialité et l'authentification du serveur d'application MUST garantir que l'URI n'est pas divulguée (section 8.3).

HTTP/1.1 201 Created
Date: Thu, 11 Dec 2014 23:56:52 GMT
Link: </push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV>;
rel="urn:ietf:params:push"
Link: </subscription-set/4UXwi2Rd7jGS7gp5cuutF8ZldnEuvbOy>;
rel="urn:ietf:params:push:set"
Location: https://push.example.net/subscription/LBhhw0OohO-Wl4Oi971UG

4.1. Collecting Subscriptions into Sets

Regrouper plusieurs abonnements dans un subscription set peut améliorer nettement l'efficacité. Le service MAY fournir l'URI de l'ensemble dans une relation urn:ietf:params:push:set.

Lorsqu'un ensemble est renvoyé, le user agent SHOULD inclure cette relation dans les requêtes POST ultérieures pour créer de nouveaux abonnements.

Le user agent MAY omettre l'ensemble s'il ne peut pas recevoir de façon agrégée pendant toute la durée de vie de l'abonnement, par exemple s'il surveille pour d'autres récepteurs.

POST /subscribe HTTP/1.1
Host: push.example.net
Link: </subscription-set/4UXwi2Rd7jGS7gp5cuutF8ZldnEuvbOy>;
rel="urn:ietf:params:push:set"

Le service SHOULD renvoyer le même ensemble, mais MAY en renvoyer un nouveau s'il ne peut pas réutiliser celui fourni.

HTTP/1.1 201 Created
Date: Thu, 11 Dec 2014 23:56:52 GMT
Link: </push/YBJNBIMwwA_Ag8EtD47J4A>;
rel="urn:ietf:params:push"
Link: </subscription-set/4UXwi2Rd7jGS7gp5cuutF8ZldnEuvbOy>;
rel="urn:ietf:params:push:set"
Location: https://push.example.net/subscription/i-nQ3A9Zm4kgSWg8_ZijV

Le service MUST renvoyer 400 (Bad Request) si l'ensemble est invalide. Il MAY renvoyer 429 (Too Many Requests) [RFC6585] si l'ensemble est omis.

La détection que les requêtes proviennent du même user agent est spécifique à l'implémentation (TLS, IP source, port, etc.). Les heuristiques peuvent produire des faux positifs.