TsgcHTTP3Server › メソッド › SendResponse
リクエストストリーム上で HTTP/3 レスポンス(HEADERS および DATA フレーム)を送信します。
procedure SendResponse(const aQUICConn: TsgcQUICServerConnection; aStreamId: Int64; const aResponse: TsgcHTTP3Response);
| 名前 | タイプ | 説明 |
|---|---|---|
aQUICConn | const TsgcQUICServerConnection | レスポンスが書き込まれる QUIC 接続。 |
aStreamId | Int64 | レスポンスが属するリクエストストリームの識別子。 |
aResponse | const TsgcHTTP3Response | 送信するレスポンス。呼び出す前に StatusCode、ContentType、オプションの Headers および Data ボディを設定してください。 |
SendResponse は、レスポンスヘッダーを QPACK でエンコードして HEADERS フレームに変換し、レスポンスにボディがある場合は DATA フレームを追加して、QUIC 経由でリクエストストリームに書き込みます。ステータスコードは :status 疑似ヘッダーで送信され、ボディが存在する場合は content-length ヘッダーが自動的に追加されます。
通常のリクエストフローでは SendResponse を呼び出す必要はありません。サーバーは TsgcHTTP3Response(StatusCode のデフォルトは 200)を作成し、アプリケーションが設定できるように OnH3Request を発生させ、その後自動的に送信します。SendResponse は、そのフロー外でレスポンスを生成する必要があるアドバンスシナリオ向けに公開されており、SendPush によっても内部で使用されます。
oResponse := TsgcHTTP3Response.Create;
try
oResponse.StatusCode := 200;
oResponse.ContentType := 'text/plain';
oResponse.Data := TEncoding.UTF8.GetBytes('Hello HTTP/3');
oServer.SendResponse(aConnection, aStreamId, oResponse);
finally
oResponse.Free;
end;