TsgcHTTP3Server › メソッド › SendPush

SendPush メソッド

HTTP/3 サーバープッシュ(PUSH_PROMISE とプッシュレスポンス)を送信します。

構文

procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);

パラメータ

名前タイプ説明
aQUICConnconst TsgcQUICServerConnectionプッシュが送信される QUIC 接続。
aPushIdInt64このサーバープッシュとレスポンスを運ぶ単方向プッシュストリームを識別するプッシュ ID。
aRequestconst TsgcHTTP3Requestプッシュが応答する合成リクエスト。その Method、Scheme、Host(authority)および Path は PUSH_PROMISE フレームのリクエスト疑似ヘッダーとしてエンコードされます。
aResponseconst TsgcHTTP3Responseプッシュストリームで配信されるレスポンス。呼び出す前に StatusCode、ContentType、オプションの Headers および Data ボディを設定してください。

解説

SendPush は、まずリクエスト疑似ヘッダーを含む PUSH_PROMISE フレームをリクエストストリームに書き込み、次にプッシュ ID をプレフィックスとする単方向プッシュストリーム(ストリームタイプ 0x01)を開き、SendResponse を通じてそこにレスポンスを送信します。サーバープッシュにより、サーバーはクライアントがまだリクエストしていないリソースを積極的に配信できます。

クライアントは非ゼロの MAX_PUSH_ID を通知してプッシュを許可している必要があります。許可していない場合、またはプッシュ ID がその制限を超えている場合、クライアントはプッシュを破棄します。HTTP/3 サーバープッシュはほとんどのブラウザで非推奨となっているため、自分が管理するクライアントに対してのみ使用してください。

使用例


oRequest := TsgcHTTP3Request.Create;
oResponse := TsgcHTTP3Response.Create;
try
  oRequest.Scheme := 'https';
  oRequest.Host := 'example.com';
  oRequest.Path := '/style.css';
  oResponse.StatusCode := 200;
  oResponse.ContentType := 'text/css';
  oResponse.Data := TEncoding.UTF8.GetBytes('body { margin: 0; }');
  oServer.SendPush(aConnection, 0, oRequest, oResponse);
finally
  oResponse.Free;
  oRequest.Free;
end;

メソッドに戻る