Server Push ist die Fähigkeit des Servers, mehrere Antworten für eine einzelne Client-Anfrage zu senden. Das heißt, zusätzlich zur Antwort auf die ursprüngliche Anfrage kann der Server zusätzliche Ressourcen an den Client pushen, ohne dass der Client jede einzelne explizit anfordern muss.

Jedes Mal, wenn der Server eine PushPromise-Nachricht an den Client sendet, wird das Ereignis OnHTTP2PushPromise aufgerufen. Wenn der Client ein PushPromise empfängt, bedeutet dies, dass der Server diese Ressource in den nächsten Paketen senden wird, sodass der Client sie akzeptieren oder ablehnen kann.
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;