TsgcHTTP3Server › Yöntemler › SendPush
Bir HTTP/3 sunucu push'ı (PUSH_PROMISE ve push akışı) gönderir.
procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);
| Name | Type | Açıklama |
|---|---|---|
aQUICConn | const TsgcQUICServerConnection | Push'ın gönderildiği QUIC bağlantısı. |
aPushId | Int64 | Bu sunucu push'ını ve yanıtı taşıyan tek yönlü push akışını tanımlayan Push kimliği. |
aRequest | const TsgcHTTP3Request | Push'ın yanıtladığı yapay istek. Method, Scheme, Host (authority) ve Path, PUSH_PROMISE çerçevesinin istek sözde başlıkları olarak kodlanır. |
aResponse | const TsgcHTTP3Response | Push akışında iletilen yanıt. Çağırmadan önce StatusCode, ContentType, isteğe bağlı Headers ve Data gövdesini ayarlayın. |
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.
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;