2. 概要
2. 概要
プッシュサービスの一般的モデルには三つの基本アクターがある: ユーザエージェント (user agent), プッシュサービス (push service), アプリケーション (サーバ).
+-------+ +--------------+ +-------------+
| UA | | Push Service | | Application |
+-------+ +--------------+ | Server |
| | +-------------+
| Subscribe | |
|--------------------->| |
| Monitor | |
|<====================>| |
| | |
| Distribute Push Resource |
|-------------------------------------------->|
| | |
: : :
| | Push Message |
| Push Message |<---------------------|
|<---------------------| |
| | |
図 1: WebPush アーキテクチャ
プロセスの最初に, ユーザエージェントが新しいメッセージ購読を作成しアプリケーションサーバへ配布する. この購読はアクター間の将来のすべての相互作用の基礎となる. アプリケーションサーバは購読を用いてプッシュサービスへメッセージを送りユーザエージェントへ配信する. ユーザエージェントは購読を用いてプッシュサービスを監視し着信メッセージを待つ.
認可の制御を強化するため, メッセージ購読は能力の異なる二つのリソースとしてモデル化される:
-
購読リソース (subscription resource) は購読からメッセージを受信し購読を削除するために用いられる. ユーザエージェントにプライベートである.
-
プッシュリソース (push resource) は購読へメッセージを送るために用いられる. 公開され, ユーザエージェントがアプリケーションサーバと共有する.
各アプリケーションに一意の購読が配布されることが期待されるが, プロトコルに内在的な基数制約はない. 同一アプリケーションに複数の購読が作成されうるし, 複数アプリケーションが同一購読を使うこともある. ただし購読の共有にはセキュリティとプライバシーの含意がある.
購読は有限の生存期間を持つ. プッシュサービスまたはユーザエージェントによってもいつでも終了されうる. ユーザエージェントとアプリケーションサーバは購読状態の変化に備えなければならない.
2.1. HTTP Resources (HTTP リソース)
本プロトコルは HTTP リソース [RFC7230] とリンク関係 (link relations) [RFC5988] を用いる. 次のリソースが定義される:
push service (プッシュサービス): このリソースはプッシュメッセージ購読の作成 (第 4 節) に用いられる. プッシュサービスの URL はユーザエージェントに構成される.
push message subscription (プッシュメッセージ購読): このリソースはメッセージ購読への読取りと削除アクセスを提供する. ユーザエージェントはプッシュメッセージ購読を用いてプッシュメッセージ (第 6 節) を受信する. 各プッシュメッセージ購読には正確に一つのプッシュリソースが関連付けられる.
push message subscription set (プッシュメッセージ購読集合): このリソースはプッシュメッセージ購読の集合への読取りと削除アクセスを提供する. ユーザエージェントは集合内のすべてのプッシュメッセージ購読についてプッシュメッセージ (第 6.1 節) を受信する. 型 urn:ietf:params:push:set のリンク関係がプッシュメッセージ購読集合を識別する.
push (プッシュ): アプリケーションサーバはプッシュリソースを用いてプッシュメッセージの配信 (第 5 節) を要求する. 型 urn:ietf:params:push のリンク関係がプッシュリソースを識別する.
push message (プッシュメッセージ): プッシュサービスはプッシュメッセージリソースを作成し, 配信のために受理された (第 5 節) プッシュメッセージを識別する. プッシュメッセージリソースはユーザエージェントがプッシュメッセージの受領 (第 6.2 節) を確認するために削除する.
receipt subscription (受領購読): アプリケーションサーバは受領購読を用いてプッシュメッセージの配信確認 (第 5.1 節) を受信する. 型 urn:ietf:params:push:receipt のリンク関係が受領購読を識別する.