TsgcHTTP3Server › Méthodes › SendPush

SendPush Méthode

Envoie un push serveur HTTP/3 (PUSH_PROMISE plus une réponse envoyée en push).

Syntaxe

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

Paramètres

NomTypeDescription
aQUICConnconst TsgcQUICServerConnectionConnexion QUIC sur laquelle le push est envoyé.
aPushIdInt64Identifiant push qui identifie ce push serveur et le flux push unidirectionnel qui transporte la réponse.
aRequestconst TsgcHTTP3RequestRequête synthétique à laquelle le push répond. Sa méthode (Method), son schéma (Scheme), son hôte (Host/authority) et son chemin (Path) sont encodés en tant que pseudo-en-têtes de requête de la trame PUSH_PROMISE.
aResponseconst TsgcHTTP3ResponseRéponse transmise sur le flux push. Définissez StatusCode, ContentType, les en-têtes optionnels et le corps Data avant l'appel.

Remarques

SendPush écrit d'abord une trame PUSH_PROMISE sur le flux de requête portant les pseudo-en-têtes de requête, puis ouvre un QUIC stream push unidirectionnel (type de flux 0x01) préfixé avec l'ID de push et envoie la réponse là via SendResponse. Le push serveur permet au serveur de livrer de manière proactive une ressource que le client n'a pas encore demandée.

Le client doit avoir autorisé les pushs en annonçant un MAX_PUSH_ID non nul ; si ce n'est pas le cas, ou si l'identifiant de push dépasse cette limite, le client ignore le push. Notez que le push serveur HTTP/3 est déprécié dans la plupart des navigateurs ; utilisez-le uniquement avec des clients que vous contrôlez.

Exemple


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;

Retour aux méthodes