2016-09-01 2 views
5

HTML5 EventSource 개체를 통해 SSE를 사용하는 경우 HTTP/2 멀티플렉싱/파이프 라이닝 기능을 사용합니까? 특히 SSE 요청은 다른 탭에서 (다시) 동일한 HTTP/2 연결을 사용합니까?서버 보낸 이벤트가 HTTP/2 파이프 라이닝을 사용합니까?

SSE가 HTTP/1.1 chunked_encoding 기술을 기반으로하고 있지만 확인하고 싶었 기 때문에 그렇게 가정합니다.

+1

HTTP/2는 전송 수준에서 작동하며 HTTP 1.1 대신에 TLS에 더 가깝습니다 (대부분 TLS에 대한 응용 프로그램 계층 프로토콜 협상 (ALPN) 확장으로 구현 됨). 따라서 Server-Sent 이벤트는 HTTP/2와 함께 문제가 없으며 파이프 라인 기능을 사용해야합니다. HTTP/2의 디자인 목표 중 하나는 다음과 같습니다. HTTP 1.1을 사용하도록 개발 된 오래된 응용 프로그램은 HTTP/2의 장점을 자동으로 사용해야합니다 (여전히 서버 푸시를 사용하도록 수정해야 함). – Oleg

답변

2

예. 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을 가져 오십시오.

1

이론적으로는 그렇다. 실제로 대부분의 브라우저는 XmlHttpRequest2 객체 위에 SSE를 구현 했으므로 대답은 동일해야합니다.

(공평하게도 AJAX 요청이 동일한 출처에 대해 탭간에 공유된다는 사실을 밝히지는 못했지만 브라우저가 허용하지 않는 이유를 상상하기가 어렵습니다. 예를 들어, 보안상의 이유를 생각해보십시오.)

관련 문제