HTTP/2 서버

TsgcWebSocketHTTPServer를 통해 단일 TLS 포트에서 HTTP/2(h2)를 HTTP/1.1 및 WebSocket과 함께 제공해요. ALPN 협상, HPACK, 스트림 멀티플렉싱이 내장돼 있어요.

TsgcWebSocketHTTPServer

WebSocket 및 HTTP/1.1에 사용되는 동일한 TsgcWebSocketHTTPServer가 TLS를 통해 HTTP/2도 제공해요 — Specifications.HTTP2를 토글하면 ALPN이 나머지를 처리해요.

컴포넌트 클래스

TsgcWebSocketHTTPServer

프로토콜

HTTP/2 (RFC 9113)

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Professional / Enterprise

속성 하나로 HTTP/2 활성화

TsgcWebSocketHTTPServer 인스턴스에서 TLS를 활성화하고 Specifications.HTTP2를 토글하세요 — ALPN h2 협상이 업그레이드를 자동으로 처리해요.

uses
  sgcWebSocket;

var
  Server: TsgcWebSocketHTTPServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'cert.pem';
  Server.SSLOptions.KeyFile  := 'key.pem';

  // Allow HTTP/1.1, HTTP/2 and WebSocket on the same port
  Server.Specifications.HTTP   := True;
  Server.Specifications.HTTP2  := True;
  Server.Specifications.RFC6455 := True;

  Server.OnCommandGet := procedure(AContext: TIdContext;
    ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo)
  begin
    AResponseInfo.ContentText := 'Hello over HTTP/' + IfThen(ARequestInfo.HTTP2, '2', '1.1');
  end;

  Server.Active := True;
end;
// uses: sgcWebSocket
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
Server->Port = 443;
Server->SSL  = true;
Server->Specifications->HTTP2 = true;
Server->Active = true;

내부 구성

HTTP/2가 활성화된 TsgcWebSocketHTTPServer — HTTP/1.1, HTTP/2, WebSocket 간에 하나의 TLS 엔드포인트를 공유해요.

ALPN 협상

TLS 핸드셰이크 중에 서버는 http/1.1h2를 모두 광고해요. 클라이언트가 프로토콜을 선택하면 서버가 그에 따라 디스패치해요 — 별도의 리스닝 소켓이 필요 없어요.

WebSocket 공존

WebSocket 클라이언트는 여전히 HTTP/1.1 경로를 통해 업그레이드해요. RFC 8441(HTTP/2로 WebSocket 부트스트래핑)은 Specifications.RFC8441을 통해 지원돼요.

HPACK + 스트림 프레이밍

응답 헤더를 위한 내장 HPACK 인코더와 우선순위 힌트를 반영하여 각 요청을 자체 스트림 ID로 디스패치하는 스트림 멀티플렉싱 코어예요.

서버 푸시

서버 푸시(PUSH_PROMISE)가 지원되지만 현재는 지원 중단됐어요 — 최신 클라이언트는 이를 무시해요. 힌트 대신 103 Early Hints 또는 HTTP/3을 고려하세요.

TLS 선택

SSLOptions.IOHandleriohOpenSSL(크로스 플랫폼) 또는 iohSChannel(Windows)으로 설정하세요. HTTP/2는 RFC 7540 / 9113 배포에 따라 TLS 1.2+가 필요해요.

연결 메트릭

각 HTTP/2 연결은 OnHTTP2Settings를 통해 스트림 수, RTT 추정값, 총 입출력 바이트, 협상된 SETTINGS 프레임 매개변수를 노출해요.

사양 및 참조

이 컴포넌트가 구현하는 프로토콜의 공식 출처예요.

문서 및 데모

컴포넌트 레퍼런스 링크, 즉시 실행 가능한 데모 프로젝트, 체험판 다운로드를 제공해요.

온라인 도움말 — TsgcWebSocketHTTPServer 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요.
Demo Project — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client 즉시 실행 가능한 예제 프로젝트예요. sgcWebSockets 패키지에 포함돼 있어요 — 아래에서 체험판을 다운로드하세요.
기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 기본 출처 참조를 포함해요.
사용자 매뉴얼 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 매뉴얼이에요.

Delphi에서 HTTP/2를 제공할 준비가 됐나요?

무료 체험판을 다운로드하고 단일 TLS 엔드포인트에서 HTTP/1.1, HTTP/2, WebSocket을 제공하세요.