服务器推送是服务器为单个客户端请求发送多个响应的能力。也就是说,除了对原始请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端明确请求每个资源。

每次服务器向客户端发送 PushPromise 消息时,将调用 OnHTTP2PushPromise 事件。当客户端收到 PushPromise 时,表示服务器将在后续数据包中发送该资源,客户端可以接受或拒绝它。
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;