4. プッシュメッセージの購読
4. プッシュメッセージの購読
ユーザエージェント (user agent) は構成済みのプッシュサービスリソースへ POST リクエストを送り新しい購読を作成する.
POST /subscribe HTTP/1.1
Host: push.example.net
201 (Created) レスポンスはプッシュ購読が作成されたことを示す. リクエストに応じて作成されたプッシュメッセージ購読リソースの URI は Location ヘッダフィールドに返さなければならない (MUST).
プッシュサービスは, 型 urn:ietf:params:push のリンク関係で, 対応するプッシュメッセージ購読のプッシュリソース URI を提供しなければならない (MUST).
プッシュ URI をアプリケーションサーバへ配布するにはアプリケーション固有の方法を用いる. この URI が不正な受信者に漏れないよう, 機密性保護とアプリケーションサーバ認証を用いなければならない (MUST) (第 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 (購読を集合にまとめる)
複数のプッシュメッセージ購読を購読集合 (subscription set) にまとめると, プッシュサービスとユーザエージェントにとって大きな効率改善になりうる. プッシュサービスは型 urn:ietf:params:push:set のリンク関係で購読集合リソースの URI を提供してもよい (MAY).
プッシュメッセージ購読レスポンスに購読集合が返された場合, ユーザエージェントは以降の新規プッシュメッセージ購読作成リクエストに, 型 urn:ietf:params:push:set のその購読集合を含めるべきである (SHOULD).
購読の生存期間中に集約方式でプッシュメッセージを受信できない場合, ユーザエージェントは購読集合を省略してもよい (MAY). ユーザエージェントが他のプッシュメッセージ受信者に代わって購読を監視する場合に必要となりうる.
POST /subscribe HTTP/1.1
Host: push.example.net
Link: </subscription-set/4UXwi2Rd7jGS7gp5cuutF8ZldnEuvbOy>;
rel="urn:ietf:params:push:set"
プッシュサービスはレスポンスで同じ購読集合を返すべきである (SHOULD) が, ユーザエージェントが提供した集合を再利用できない場合は新しい購読集合を返してもよい (MAY).
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
プッシュサービスは無効な購読集合を含むリクエストに対して 400 (Bad Request) ステータスコードを返さなければならない (MUST). プッシュサービスは購読集合を省略したリクエストを拒否するために 429 (Too Many Requests) ステータスコード [RFC6585] を返してもよい (MAY).
同一ユーザエージェントからのリクエストをプッシュサービスがどう検出するかは実装依存であり, TLS 接続, 送信元 IP アドレスとポートなどの周辺情報を考慮しうる. 実装者は, 一部のヒューリスティックは偽陽性を生じリクエストが誤って拒否されうることに留意すべきである.