TsgcHTTP2Client › 事件 › 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;