TsgcHTTP2Clientイベント › OnHTTP2PushPromise

OnHTTP2PushPromise イベント

サーバーがリソースをプッシュしたときに発生し、クライアントはそれを受け入れるかキャンセルするかを選択できます。

構文

property OnHTTP2PushPromise: TsgcHTTP2ClientPushPromiseEvent;
// TsgcHTTP2ClientPushPromiseEvent = procedure(Sender: TObject; const Connection: TsgcHTTP2ConnectionClient; const PushPromise: TsgcHTTP2_Frame_PushPromise; var Cancel: Boolean) of object

デフォルト値

解説

OnHTTP2PushPromise は、サーバーが PUSH_PROMISE フレームを送信して、独自の判断で追加のリソースをプッシュしようとしていることを告知するときに発生します(例えば、クライアントがリクエストしたばかりのページに関連する画像やスクリプト)。PushPromise パラメーターはプロミスされたリソース(メソッド、URL、ヘッダー)を説明するので、アプリケーションはそれが関連があるかどうかを判断できます。Cancel を True に設定するとプッシュされたストリームを拒否します(クライアントは RST_STREAM を送信します)。False のままにするとストリームを受け入れ、データは後で OnHTTP2Response / OnHTTP2ResponseFragment を通じて配信されます。サーバープッシュは Settings.EnablePush が True の場合のみ受信されます。

使用例


oClient := TsgcHTTP2Client.Create(nil);
oClient.OnHTTP2PushPromise := OnHTTP2PushPromiseEvent;
oClient.Get('https://http2.golang.org/serverpush');

procedure OnHTTP2PushPromiseEvent(Sender: TObject; const Connection: TsgcHTTP2ConnectionClient;
  const PushPromise: TsgcHTTP2_Frame_PushPromise; var Cancel: Boolean);
begin
  if PushPromise.URL = '/serverpush/static/godocs.js' then
    Cancel := True
  else
    Cancel := False;
end;

イベントに戻る