TsgcHTTP3Server › Metodi › SendPush

SendPush Metodo

Invia un server push HTTP/3 (PUSH_PROMISE più una risposta inviata tramite push).

Sintassi

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

Parametri

NomeTipoDescrizione
aQUICConnconst TsgcQUICServerConnectionConnessione QUIC su cui viene inviato il push.
aPushIdInt64Push ID che identifica questo server push e lo stream di push unidirezionale che trasporta la risposta.
aRequestconst TsgcHTTP3RequestRichiesta sintetica a cui risponde il push. I suoi Method, Scheme, Host (authority) e Path sono codificati come pseudo-header di richiesta del frame PUSH_PROMISE.
aResponseconst TsgcHTTP3ResponseRisposta consegnata sullo stream di push. Impostare StatusCode, ContentType, gli Headers facoltativi e il corpo Data prima della chiamata.

Note

SendPush scrive prima un frame PUSH_PROMISE sullo stream di richiesta contenente gli pseudo-header della richiesta, quindi apre uno stream di push unidirezionale (tipo di stream 0x01) preceduto dal Push ID e invia lì la risposta tramite SendResponse. Il server push consente al server di consegnare in modo proattivo una risorsa che il client non ha ancora richiesto.

Il client deve aver consentito i push annunciando un MAX_PUSH_ID diverso da zero; in caso contrario, o se il Push ID supera quel limite, il client scarta il push. Si noti che il server push HTTP/3 è deprecato nella maggior parte dei browser, quindi utilizzarlo solo con client sotto il proprio controllo.

Esempio


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;

Torna ai Metodi