TsgcHTTP3Server › Méthodes › SendPush
Envoie un push serveur HTTP/3 (PUSH_PROMISE plus une réponse envoyée en push).
procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);
| Nom | Type | Description |
|---|---|---|
aQUICConn | const TsgcQUICServerConnection | Connexion QUIC sur laquelle le push est envoyé. |
aPushId | Int64 | Identifiant push qui identifie ce push serveur et le flux push unidirectionnel qui transporte la réponse. |
aRequest | const TsgcHTTP3Request | Requê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. |
aResponse | const TsgcHTTP3Response | Réponse transmise sur le flux push. Définissez StatusCode, ContentType, les en-têtes optionnels et le corps Data avant l'appel. |
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.
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;