WebBroker + WebSockets + HTTP/2

同一 TLS ポートで WebSocket アップグレードと HTTP/2 ストリームも受け付ける、クロスプラットフォームの WebBroker / DataSnap ホストです。

TsgcWSHTTP2WebBrokerBridgeServer

TsgcWSHTTPWebBrokerBridgeServer のクロスプラットフォーム版で、HTTP/2 フレーミングを追加しています。ALPN の h2 ネゴシエーションがアップグレードパスを処理するため、既存の WebBroker ハンドラーはそのまま使用できます。

コンポーネントクラス

TsgcWSHTTP2WebBrokerBridgeServer

プロトコル

HTTP/2 (RFC 9113)

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

TLS を設定し、HTTP/2 を有効にしてリッスンする

TWebModule をマウントし、SSLOptions と Specifications.HTTP2 を設定して Active := True にするだけで、HTTP/1.1、HTTP/2、WebSocket がすべて同一 TLS エンドポイントを共有します。

uses
  sgcWebSocket, sgcWebSocket_DataSnap, WebReq, WebModuleUnit1;

var
  Server: TsgcWSHTTP2WebBrokerBridgeServer;
begin
  if WebRequestHandler <> nil then
    WebRequestHandler.WebModuleClass := WebModuleClass;

  Server := TsgcWSHTTP2WebBrokerBridgeServer.Create(nil);
  Server.Port := 443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'cert.pem';
  Server.SSLOptions.KeyFile  := 'key.pem';
  Server.Specifications.HTTP   := True;
  Server.Specifications.HTTP2  := True;
  Server.Specifications.RFC6455 := True;

  Server.Active := True;
end;

主な機能

OpenSSL Indy スタック上の WebBroker / DataSnap に HTTP/2 フレーミングを追加 ― 1 つの TLS エンドポイントで 3 つのプロトコルに対応します。

ALPN ディスパッチ

TLS ハンドシェイク中にサーバーは http/1.1h2 をアドバタイズし、クライアントがいずれかを選択します。WebSocket アップグレードは引き続き HTTP/1.1 パスを使用します。

HTTP/2 多重化

複数の HTTP/2 ストリームが 1 つの TCP 接続を共有します。1 つのブラウザータブが HOL ブロッキングなしに数十の REST 呼び出しを並行して発行できます。

WebBroker ハンドラーの変更不要

各 HTTP/2 リクエストはデコードされ WebBroker パイプラインを通じて再生されるため、既存の TWebModule、DataSnap REST、RAD Server ハンドラーはそのまま動作します。

WebSocket との共存

Specifications.RFC6455 := True を設定することで、同一ポートで WebSocket アップグレードを継続して受け付けます。OnConnect / OnMessage をバインドしてライブチャネルを利用できます。

OpenSSL による TLS

クロスプラットフォームの OpenSSL TLS です。カーネルモード TLS を使用する Windows 専用デプロイメントには、HTTP.SYS 上の TsgcWSServer_HTTPAPI_WebBrokerBridge を使用してください。

HTTP/3 パス

QUIC ベースの HTTP/3 には TsgcHTTP3Server を直接使用します ― レガシークライアントに TCP 上の HTTP/2、最新クライアントに QUIC 上の HTTP/3 を提供するときは両者を組み合わせます。

仕様とリファレンス

本コンポーネントが実装するプロトコルの公式リファレンスです。

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行できるデモプロジェクト、体験版のダウンロードをご利用ください。

オンラインヘルプ — TsgcWSHTTP2WebBrokerBridgeServer 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\40.DataSnap\Server_Indy_HTTP2 すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています — 下のリンクから体験版をダウンロードしてください。
技術ドキュメント (PDF) 機能、クイックスタート、Delphi および C++ Builder のコードサンプルと一次情報源リファレンス — 本コンポーネントのみ。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した包括的なマニュアルです。

DataSnap サーバーに HTTP/2 を追加しますか?

体験版をダウンロードして、1 つの Delphi DataSnap ホストから HTTP/1.1、HTTP/2、WebSocket を提供しましょう。