TsgcHTTP2Client › 이벤트 › 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 매개변수는 약속된 리소스(method, URL, headers)를 설명하므로 애플리케이션이 그것이 관심 있는지 결정할 수 있습니다. 푸시된 스트림을 거부하려면 Cancel을 True로 설정하거나(클라이언트가 RST_STREAM을 보냄), 수락하려면 False로 두십시오. 이 경우 데이터는 나중에 OnHTTP2Response / OnHTTP2ResponseFragment를 통해 전달됩니다. Server push는 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;