TsgcHTTP3Server › Metody › SendPush

SendPush Metoda

Wysyła wypychanie przez serwer HTTP/3 (PUSH_PROMISE wraz z wypchaną odpowiedzią).

Składnia

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

Parametry

NazwaTypOpis
aQUICConnconst TsgcQUICServerConnectionPołączenie QUIC, przez które wysyłane jest wypychanie.
aPushIdInt64Identyfikator push, który identyfikuje to wypychanie przez serwer i jednokierunkowy strumień push przenoszący odpowiedź.
aRequestconst TsgcHTTP3RequestSyntetyczne żądanie, na które odpowiada wypychanie. Jego Method, Scheme, Host (authority) i Path są kodowane jako pseudo-nagłówki żądania ramki PUSH_PROMISE.
aResponseconst TsgcHTTP3ResponseOdpowiedź dostarczana przez strumień push. Przed wywołaniem ustaw StatusCode, ContentType, opcjonalne Headers i treść Data.

Uwagi

SendPush najpierw zapisuje ramkę PUSH_PROMISE w strumieniu żądania zawierającą pseudonagłówki żądania, następnie otwiera jednostronny strumień wypychania (typ strumienia 0x01) poprzedzony identyfikatorem Push ID i wysyła tam odpowiedź przez SendResponse. Wypychanie przez serwer pozwala serwerowi proaktywnie dostarczyć zasób, którego klient jeszcze nie zażądał.

Klient musi zezwolić na wypychanie poprzez reklamowanie niezerowego MAX_PUSH_ID; jeśli tego nie zrobił lub jeśli Push ID przekracza ten limit, klient odrzuca wypychanie. Należy pamiętać, że wypychanie przez serwer HTTP/3 jest przestarzałe w większości przeglądarek, więc używaj go tylko z klientami, które kontrolujesz.

Przykład


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;

Powrót do metod