TsgcHTTP3Server › Yöntemler › SendPush

SendPush Yöntem

Bir HTTP/3 sunucu push'ı (PUSH_PROMISE ve push akışı) gönderir.

Sözdizimi

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

Parametreler

NameTypeAçıklama
aQUICConnconst TsgcQUICServerConnectionPush'ın gönderildiği QUIC bağlantısı.
aPushIdInt64Bu sunucu push'ını ve yanıtı taşıyan tek yönlü push akışını tanımlayan Push kimliği.
aRequestconst TsgcHTTP3RequestPush'ın yanıtladığı yapay istek. Method, Scheme, Host (authority) ve Path, PUSH_PROMISE çerçevesinin istek sözde başlıkları olarak kodlanır.
aResponseconst TsgcHTTP3ResponsePush akışında iletilen yanıt. Çağırmadan önce StatusCode, ContentType, isteğe bağlı Headers ve Data gövdesini ayarlayın.

Remarks

SendPush, önce istek sözde başlıklarını taşıyan istek akışına bir PUSH_PROMISE çerçevesi yazar, ardından Push Kimliği ile öneklenmiş tek yönlü bir push akışı (akış türü 0x01) açar ve yanıtı SendResponse aracılığıyla buraya gönderir. Sunucu push'ı, sunucunun istemcinin henüz talep etmediği bir kaynağı proaktif olarak iletmesini sağlar.

İstemcinin sıfır olmayan bir MAX_PUSH_ID duyurarak push'lara izin vermiş olması gerekir; izin verilmemişse veya Push Kimliği bu sınırı aşıyorsa istemci push'u atar. HTTP/3 sunucu push'ının çoğu tarayıcıda kullanımdan kaldırıldığını unutmayın; bu nedenle yalnızca denetlediğiniz istemcilerle kullanın.

Örnek


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;

Yöntemlere Dön