Le Server Push est la capacité du serveur à envoyer plusieurs réponses pour une seule requête client. C'est-à-dire qu'en plus de la réponse à la requête initiale, le serveur peut envoyer des ressources supplémentaires au client, sans que celui-ci ait à les demander explicitement.
Chaque fois que le serveur envoie un message PushPromise au client, l'événement OnHTTP2PushPromise est appelé. Lorsque le client reçoit un PushPromise, cela signifie que le serveur enverra cette ressource dans les prochains paquets, de sorte que le client peut l'accepter ou la rejeter.
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;