TsgcHTTP3Server › Métodos › SendPush

SendPush Método

Envia um server push HTTP/3 (PUSH_PROMISE mais uma resposta enviada pelo servidor).

Sintaxe

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

Parâmetros

NameTypeDescrição
aQUICConnconst TsgcQUICServerConnectionConexão QUIC pela qual o push é enviado.
aPushIdInt64ID de push que identifica este server push e o stream de push unidirecional que transporta a resposta.
aRequestconst TsgcHTTP3RequestRequisição sintética à qual o push responde. Seus campos Method, Scheme, Host (authority) e Path são codificados como pseudo-cabeçalhos de requisição do frame PUSH_PROMISE.
aResponseconst TsgcHTTP3ResponseResposta entregue no stream de push. Defina StatusCode, ContentType, Headers opcionais e o corpo Data antes de chamar.

Observações

SendPush primeiro escreve um frame PUSH_PROMISE no stream de requisição carregando os pseudo-cabeçalhos de requisição, depois abre um stream de push unidirecional (tipo de stream 0x01) prefixado com o Push ID e envia a resposta ali por meio de SendResponse. O server push permite que o servidor entregue proativamente um recurso que o cliente ainda não solicitou.

O cliente deve ter permitido pushes anunciando um MAX_PUSH_ID diferente de zero; caso contrário, ou se o Push ID exceder esse limite, o cliente descarta o push. Observe que o server push do HTTP/3 está obsoleto na maioria dos navegadores, portanto use-o apenas com clientes que você controla.

Exemplo


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;

Voltar para Métodos