/
562.txt
109 lines (86 loc) · 4.15 KB
/
562.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
[2]
[DFN[[RUBYB[プッシュメッセージ][push message]]]]は、
[[アプリケーションサーバー]]から[[利用者エージェント]]へと[[プッシュサービス]]を介して送られる[[メッセージ]]です。
[SRC[>>1 1.1.]]
[3]
[[RFC 8030]] がただ「message」とのみ書いているときでも、多くは[[プッシュメッセージ]]とみられます。
[4]
[DFN[[RUBYB[プッシュメッセージ資源][push message resource]]]]は、
[[プッシュサービス]]が、
配送を受理した[[プッシュメッセージ]]を識別するべく作成するものです。
[[利用者エージェント]]による[[プッシュメッセージ]]の受領肯定で、
削除されます。
[SRC[>>1 2.1.]]
* 仕様書
[REFS[
- [1] [CITE@en[RFC 8030 - Generic Event Delivery Using HTTP Push]], [TIME[2020-03-09 00:13:33 +09:00]] <https://tools.ietf.org/html/rfc8030>
]REFS]
* 特性
[5] [[プッシュメッセージ]]の本体は、
[[HTTPメッセージ]]の[[本体]]で与えられたデータです。
[[Web Push Protocol]] としては制限はないようです。
[[内容符号化]] [CODE[aes128gcm]]
は長さ上限のある[[バイト列]]としています。
[6] [[プッシュメッセージ]]には、
有効期限があります。
[SEE[ [[TTL:]] ]]
期限到来後未配送の[[プッシュメッセージ]]は捨てられます。
[[プッシュメッセージ資源]]も削除されるかもしれません。
[7] [[プッシュメッセージ]]には、
緊急度があります。
[SEE[ [[Urgency:]] ]]
* 作成
[10] [[プッシュメッセージ]]は、
[[アプリケーションサーバー]]が[[プッシュサービス]]の[[プッシュ資源]]へと送信することで作成されます。
受理した[[プッシュサービス]]は、対応する[[プッシュメッセージ資源]]を作成します。
* 受信
[8] [[プッシュメッセージ]]は、
[[プッシュサービス]]から[[利用者エージェント]]へと、
[[プッシュメッセージ購読]]や[[プッシュメッセージ購読集合]]の[[要求]]に対する
[[server push]] で配送されます。
[SEE[ [[プッシュメッセージ購読]] ]]
[9] [[プッシュメッセージ]]の[[利用者エージェント]]の送信では、
[[プッシュメッセージ資源]]が使われます。
[[受領証]]の[[アプリケーションサーバー]]への送信では、
同じ[[プッシュメッセージ資源]]が使われます。
両者は同じ [[URL]] の [CODE[GET]]
でありながら、内容も意味も違います。
[17]
理論上、
[[server push]] の[[意味論]]的には、
[[プッシュメッセージ資源]]を直接 [CODE[GET]]
することでも同じようにアクセスできるはずですが、
このような特殊な構造になっている以上、
[[server push]] 以外の方法で使うことは考えられていないのでしょう。
* 受領
[11]
[[利用者エージェント]]は、
[[プッシュメッセージ]]を最低1回は配送されたことを示す、
受領肯定を表明しなければ[MUST[なりません]]。
[SRC[>>1 6.2.]]
[12]
[[利用者エージェント]]は、
[[プッシュメッセージ資源]]に
[CODE[DELETE]]
[[要求]]を送らなければ[MUST[なりません]]
[SRC[>>1 6.2.]]。
[16]
[CODE[DELETE]]
に対して[[プッシュサービス]]が送るべき[[応答]]は、特に規定されていません。
[CODE[200]] や [CODE[204]]
が適当でしょうか。
[CODE[DELETE]] が既に行われている場合などのエラー処理も特に規定がありません。
[14]
[[プッシュサービス]]は、
十分な時間内に肯定を受信しない場合、
未配送とみなします。
[CODE[TTL:]] 到来まで配送を試み続ける[SHOULD[べきです]]。
[SRC[>>1 6.2.]]
[15]
[[プッシュサービス]]は、
それ以前でも事情に鑑み適宜再配送を中断して[MAY[構いません]]。
[SRC[>>1 6.2.]]
[13]
受領されたかどうか、
[[プッシュサービス]]は[[受領証購読]]に適宜通知する必要があります。
* メモ