Função HttpDeclarePush (http.h)
Declara uma relação de recurso para sub-recurso a ser usada para um push de servidor HTTP. HTTP.sys executará um push de servidor HTTP 2.0 para o recurso especificado, se o protocolo, a conexão, o cliente e as políticas subjacentes permitirem a operação de push.
Sintaxe
HTTPAPI_LINKAGE ULONG HttpDeclarePush(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] HTTP_VERB Verb,
[in] PCWSTR Path,
[in, optional] PCSTR Query,
[in, optional] PHTTP_REQUEST_HEADERS Headers
);
Parâmetros
[in] RequestQueueHandle
O identificador para uma fila de solicitação HTTP.sys que a função HttpCreateRequestQueue retornou.
[in] RequestId
O identificador opaco da solicitação que está declarando a operação de push. A solicitação deve ser do identificador de fila especificado.
[in] Verb
O verbo HTTP a ser usado para a operação de push. A operação de push HTTP.sys dá suporte apenas a HttpVerbGET e HttpVerbHEAD.
[in] Path
A parte do caminho da URL do recurso que está sendo enviado por push.
[in, optional] Query
A parte de consulta da URL do recurso que está sendo enviado por push. Essa cadeia de caracteres não deve incluir o ponto de interrogação à esquerda (?).
[in, optional] Headers
Os cabeçalhos de solicitação para a operação de push.
Você não deve fornecer um cabeçalho host, pois HTTP.sys gera automaticamente as informações corretas do Host. HTTP.sys não dá suporte a operações de push entre origens, portanto, HTTP.sys impõe e gera informações de host que correspondem à solicitação original iniciada pelo cliente.
A solicitação push não tem permissão para ter um corpo de entidade, portanto, você não pode incluir um cabeçalho Content-Length diferente de zero ou qualquer cabeçalho Transfer-Encoding.
Retornar valor
Se a função for bem-sucedida, ela retornará NO_ERROR.
Se a função falhar, ela retornará um código de erro do sistema definido em WinError.h.
Comentários
Você deve chamar HttpDeclarePush antes de enviar qualquer bytes de resposta que faça com que o cliente descubra o sub-recurso em si. A falha ao observar essa ordem resulta em uma corrida entre o servidor que está enviando o recurso por push e o cliente que está recuperando os recursos, o que pode desperdiçar largura de banda. O aplicativo de servidor só deve usar HttpDeclarePush para enviar por push recursos que o aplicativo de servidor é altamente confiante são necessários e ainda não armazenados em cache pelo cliente. Se o aplicativo de servidor efetuar push de outros recursos, poderá ocorrer o uso desnecessário da largura de banda e da CPU.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2016 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | http.h |
Biblioteca | Httpapi.lib |
DLL | Httpapi.dll |