HTML5 EventSourceオブジェクトを使用してSSEを使用する場合、要求はHTTP/2多重化/パイプライン機能を利用していますか?特に、同じHTTP/2接続を別のタブ(再)で使用するSSE要求はありますか?サーバー送信イベントがHTTP/2パイプライン処理を使用しています
SSEはHTTP/1.1のchunked_encodingテクノロジに基づいているため、確認したいと思います。
HTML5 EventSourceオブジェクトを使用してSSEを使用する場合、要求はHTTP/2多重化/パイプライン機能を利用していますか?特に、同じHTTP/2接続を別のタブ(再)で使用するSSE要求はありますか?サーバー送信イベントがHTTP/2パイプライン処理を使用しています
SSEはHTTP/1.1のchunked_encodingテクノロジに基づいているため、確認したいと思います。
はいそうです。 Chromeのhttp2タグは、http2リクエストの送信方法を調べるのに最適です。chrome:// net-internals /#http2 SSEから放出された要求の場合
、あなたのようなものが表示されるはずです。あなたはこの例では見ることができるように
HTTP2_SESSION_SEND_HEADERS
--> exclusive = true
--> fin = true
--> has_priority = true
--> :method: GET
:authority: h2.example.org
:scheme: https
:path: /demo_sse.php
accept: text/event-stream
cache-control: no-cache
referer: https://h2.example.org/
accept-encoding: gzip, deflate, sdch, br
accept-language: en-US,en;q=0.8,fr;q=0.6,es;q=0.4
--> parent_stream_id = 0
--> priority = 1
--> stream_id = 7
を、ブラウザはそれが持っていた再使用して接続、ストリームID 7に要求を送信しましたhtmlを取得します。
理論的には、はい。実際には、ほとんどのブラウザがXmlHttpRequest2
オブジェクトの上にSSEを実装しているので、答えは同じでなければなりません。
(AJAXの同じ原点へのリクエストはタブ間で共有されているという明確な参照は見つかりませんでしたが、ブラウザが許可していない理由を想像するのは難しいですたとえば、セキュリティ上の理由が出てくる)。
HTTP/2はトランスポートレベルで動作し、HTTP 1.1に置き換わるものとしてTLSに近いものです(TLSへのアプリケーション層プロトコルネゴシエーション(ALPN)の拡張としてほとんど実装されています)。したがって、Server-SentイベントはHTTP/2との組み合わせでは問題はなく、*パイプライン機能を使用する必要があります。 HTTP/2の設計目標の1つは、HTTP 1.1を使用するように開発された古いアプリケーションは、自動的にHTTP/2の最大の利点を使用する必要があります(まだServer Pushを使用するために変更を加える必要があります)。 – Oleg