TsgcHTTP3Server › メソッド › SendPush
HTTP/3 サーバープッシュ(PUSH_PROMISE とプッシュレスポンス)を送信します。
procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);
| 名前 | タイプ | 説明 |
|---|---|---|
aQUICConn | const TsgcQUICServerConnection | プッシュが送信される QUIC 接続。 |
aPushId | Int64 | このサーバープッシュとレスポンスを運ぶ単方向プッシュストリームを識別するプッシュ ID。 |
aRequest | const TsgcHTTP3Request | プッシュが応答する合成リクエスト。その Method、Scheme、Host(authority)および Path は PUSH_PROMISE フレームのリクエスト疑似ヘッダーとしてエンコードされます。 |
aResponse | const 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;