ドキュメントから、 Push API と Server Sent Events はどちらも半二重であることがわかりましたが、なぜ同じ機能に対して2つの異なるテクノロジーがあるのでしょうか。 Push APIにもっと重要なものはありますか?
Push APIを使用すると、サーバーはサービスワーカーに依存しているため、サイトが開いていない場合でもクライアントに通知を送信できます。
SSE(またはWebSocket)は、ユーザーがサイトを使用している限り機能します。
ServiceWorker Cookbook のWeb Push
セクションにいくつかの例(ドキュメント付き)があり、これをよりよく理解するのに役立ちます。
サーバー送信イベントを使用してWebサイトに直接接続するのは、かなり簡単です。
Webプッシュテクノロジーははるかに複雑で、ユーザーのブラウザーはブラウザーベンダーのプッシュサーバーへの1つの接続を維持します。このサーバーは、Webサイトからすべてのプッシュを収集して配信します(それらを多重化します)。メッセージはサードパーティのサーバーを経由するため、暗号化する必要があります。 Push APIを使用するには、(クライアント側で)ブラウザー固有のベンダーのエンドポイントURLを取得し、公開暗号化キーを生成して、使用するためにサーバーに送り返します。次に、サーバーでプッシュするときに、キーを使用してメッセージを暗号化し、エンドポイントにプッシュします。
Firefoxは、プッシュメッセージが開いている限り受信するために、プッシュサービスへのアクティブな接続を維持します。
これがWebプッシュの主な利点です。ユーザーがブラウザーを開いたときに通知を配信できるため、ユーザーはサイトにアクセスする必要がありません。欠点は、このサブスクリプションについてユーザーから許可を得る必要があることです。もう1つの欠点は、現在広く普及しているとは言えないことです サポートされています 。