TsgcHTTP3Server › Methoden › SendPush

SendPush Methode

Verstuurt een HTTP/3 server-push (PUSH_PROMISE plus een gepushte reactie).

Syntaxis

procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);

Parameters

NaamTypeBeschrijving
aQUICConnconst TsgcQUICServerConnectionQUIC-verbinding waarover de push wordt verstuurd.
aPushIdInt64Push-ID die deze server-push identificeert en de unidirectionele push-stream die het antwoord draagt.
aRequestconst TsgcHTTP3RequestSynthetisch verzoek waarop de push antwoordt. De Method, Scheme, Host (authority) en Path worden gecodeerd als de verzoek-pseudo-headers van het PUSH_PROMISE-frame.
aResponseconst TsgcHTTP3ResponseAntwoord afgeleverd op de push-stream. Stel StatusCode, ContentType, optionele Headers en de Data-body in voor aanroep.

Opmerkingen

SendPush schrijft eerst een PUSH_PROMISE-frame op de verzoekstream met de verzoek-pseudo-headers, opent vervolgens een eenrichtings-pushstream (streamtype 0x01) voorafgegaan door de Push-ID en verstuurt het antwoord daar via SendResponse. Server-push stelt de server in staat om proactief een resource te leveren die de client nog niet heeft aangevraagd.

De client moet pushes hebben toegestaan door een niet-nul MAX_PUSH_ID te adverteren; als dat niet het geval is, of als de Push-ID die limiet overschrijdt, verwerpt de client de push. Merk op dat HTTP/3-serverpush in de meeste browsers is verouderd, dus gebruik het alleen met clients die u beheert.

Voorbeeld


oRequest := TsgcHTTP3Request.Create;
oResponse := TsgcHTTP3Response.Create;
try
  oRequest.Scheme := 'https';
  oRequest.Host := 'example.com';
  oRequest.Path := '/style.css';
  oResponse.StatusCode := 200;
  oResponse.ContentType := 'text/css';
  oResponse.Data := TEncoding.UTF8.GetBytes('body { margin: 0; }');
  oServer.SendPush(aConnection, 0, oRequest, oResponse);
finally
  oResponse.Free;
  oRequest.Free;
end;

Terug naar methoden