TsgcHTTP3Server › Métodos › SendPush
Envía un server push HTTP/3 (PUSH_PROMISE más una respuesta enviada por push).
procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);
| Nombre | Tipo | Descripción |
|---|---|---|
aQUICConn | const TsgcQUICServerConnection | Conexión QUIC en la que se envía el push. |
aPushId | Int64 | Push ID que identifica este server push y el stream de push unidireccional que transporta la respuesta. |
aRequest | const TsgcHTTP3Request | Solicitud sintética a la que responde el push. Su Method, Scheme, Host (authority) y Path se codifican como las pseudo-cabeceras de solicitud del frame PUSH_PROMISE. |
aResponse | const TsgcHTTP3Response | Respuesta entregada en el stream de push. Establezca StatusCode, ContentType, los Headers opcionales y el cuerpo Data antes de llamar. |
SendPush primero escribe un frame PUSH_PROMISE en el stream de solicitud que transporta las pseudo-cabeceras de la solicitud, luego abre un push stream unidireccional (tipo de stream 0x01) precedido por el Push ID y envía allí la respuesta a través de SendResponse. El server push permite al servidor entregar de forma proactiva un recurso que el cliente aún no ha solicitado.
El cliente debe haber permitido los push anunciando un MAX_PUSH_ID distinto de cero; si no lo ha hecho, o si el Push ID supera ese límite, el cliente descarta el push. Tenga en cuenta que el server push de HTTP/3 está obsoleto en la mayoría de los navegadores, por lo que debe usarlo solo con clientes que usted controle.
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;