HTTP/2 Server
TsgcWebSocketHTTPServer を使用して、単一の TLS ポート上で HTTP/1.1 および WebSocket と並行して HTTP/2(h2)を提供できます。ALPN ネゴシエーション、HPACK、ストリームの多重化を内蔵しています。
TsgcWebSocketHTTPServer を使用して、単一の TLS ポート上で HTTP/1.1 および WebSocket と並行して HTTP/2(h2)を提供できます。ALPN ネゴシエーション、HPACK、ストリームの多重化を内蔵しています。
WebSocket および HTTP/1.1 で使用する同じ TsgcWebSocketHTTPServer が TLS 上の HTTP/2 も提供します。Specifications.HTTP2 を有効にするだけで、ALPN が残りを処理します。
TsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
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 の間で 1 つの TLS エンドポイントを共有できます。
TLS ハンドシェイク中に、サーバーは http/1.1 と h2 の両方をアドバタイズします。クライアントがプロトコルを選択し、サーバーが適切にディスパッチします。別のリスニングソケットは不要です。
WebSocket クライアントは引き続き HTTP/1.1 パスを通じてアップグレードします。RFC 8441(HTTP/2 を使用した WebSocket のブートストラップ)は Specifications.RFC8441 でサポートされています。
レスポンスヘッダー用の組み込み HPACK エンコーダーと、優先度ヒントを尊重しながら各リクエストを独自のストリーム ID でディスパッチするストリーム多重化コアを搭載しています。
サーバープッシュ(PUSH_PROMISE)はサポートされていますが、現在は非推奨です。モダンなクライアントはこれを無視するため、代わりに 103 Early Hints または HTTP/3 の使用を検討してください。
SSLOptions.IOHandler を iohOpenSSL(クロスプラットフォーム)または iohSChannel(Windows)に設定してください。HTTP/2 は RFC 7540 / 9113 のデプロイメント要件として TLS 1.2 以上が必要です。
各 HTTP/2 接続は、OnHTTP2Settings を通じてストリーム数、RTT 推定値、総送受信バイト数、ネゴシエートされた SETTINGS フレームパラメーターを公開します。
コンポーネントリファレンスへの直接リンク、すぐに実行できるデモプロジェクトの入手、体験版のダウンロードができます。
| オンラインヘルプ — TsgcWebSocketHTTPServer このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。 | 開く | |
| デモプロジェクト — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。 | 開く | |
| 技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。 | 開く | |
| ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。 | 開く |