TsgcHTTP3Server › Methoden › SendPush
Verstuurt een HTTP/3 server-push (PUSH_PROMISE plus een gepushte reactie).
procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);
| Naam | Type | Beschrijving |
|---|---|---|
aQUICConn | const TsgcQUICServerConnection | QUIC-verbinding waarover de push wordt verstuurd. |
aPushId | Int64 | Push-ID die deze server-push identificeert en de unidirectionele push-stream die het antwoord draagt. |
aRequest | const TsgcHTTP3Request | Synthetisch verzoek waarop de push antwoordt. De Method, Scheme, Host (authority) en Path worden gecodeerd als de verzoek-pseudo-headers van het PUSH_PROMISE-frame. |
aResponse | const TsgcHTTP3Response | Antwoord afgeleverd op de push-stream. Stel StatusCode, ContentType, optionele Headers en de Data-body in voor aanroep. |
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.
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;