TsgcHTTP3Server › Métodos › SendPush

SendPush Método

Envía un server push HTTP/3 (PUSH_PROMISE más una respuesta enviada por push).

Sintaxis

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

Parámetros

NombreTipoDescripción
aQUICConnconst TsgcQUICServerConnectionConexión QUIC en la que se envía el push.
aPushIdInt64Push ID que identifica este server push y el stream de push unidireccional que transporta la respuesta.
aRequestconst TsgcHTTP3RequestSolicitud 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.
aResponseconst TsgcHTTP3ResponseRespuesta entregada en el stream de push. Establezca StatusCode, ContentType, los Headers opcionales y el cuerpo Data antes de llamar.

Observaciones

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.

Ejemplo


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;

Volver a Métodos