TsgcHTTP2Client事件 › OnHTTP2PushPromise

OnHTTP2PushPromise 事件

当服务器推送资源时触发,客户端可以接受或取消它。

语法

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

默认值

备注

当服务器发送 PUSH_PROMISE 帧时触发 OnHTTP2PushPromise 事件,表示服务器将主动推送一个额外的资源(例如与客户端刚刚请求的页面相关联的图片或脚本)。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;

返回事件