Protocolo HTTP/2

Cliente e servidor HTTP/2 nativos para Delphi e C++Builder. Enquadramento binário, multiplexação de streams, compressão de cabeçalhos HPACK e negociação ALPN — sem dependência de IIS, Apache ou Indy.

Escolha o lado que você precisa

Dois componentes prontos para produção implementam todo o protocolo HTTP/2 (RFC 9113). Use o cliente para consumir APIs HTTP/2, use o servidor para publicá-las — ou ambos dentro da mesma aplicação.

TsgcHTTP2Client

Cliente HTTP/2 nativo — GET/POST/PUT/DELETE multiplexados sobre uma única conexão TLS, cabeçalhos comprimidos por HPACK, upgrade ALPN h2 ou conhecimento prévio h2c, tratamento de server push e autenticação bearer / basic / NTLM.

Abrir Cliente HTTP/2 →

TsgcWebSocketHTTPServer

Servidor HTTP/2 nativo — o mesmo servidor HTTP WebSocket atende HTTP/1.1, HTTP/2 (h2) e WebSocket em uma única porta TLS. Negociação ALPN, multiplexação de streams, respostas HPACK e bootstrap opcional de WebSocket sobre HTTP/2 conforme RFC 8441.

Abrir Servidor HTTP/2 →

HTTP/2 no sgcWebSockets

Uma implementação de primeira classe do enquadramento HTTP/2 integrada tanto ao cliente quanto ao servidor HTTP WebSocket.

Componentes

TsgcHTTP2Client
TsgcWebSocketHTTPServer

Plataformas

Windows, macOS, Linux, iOS, Android

Edições

Cliente: Standard / Pro / Enterprise
Servidor: Pro / Enterprise

O que o HTTP/2 traz

Todos os ganhos do HTTP/2 sobre o HTTP/1.1 — em código Delphi/C++Builder nativo, sem precisar iniciar um servidor web separado.

Enquadramento binário

Requisições e respostas são divididas em frames binários, analisados por uma máquina de estados determinística. Acabou a análise de linhas de texto e a ambiguidade do HTTP/1.1.

Multiplexação de streams

Dezenas de requisições em andamento compartilham uma única conexão TCP/TLS — sem head-of-line blocking na camada HTTP, sem sockets extras por requisição.

Compressão de cabeçalhos HPACK

Codificador/decodificador HPACK integrado (RFC 7541). Cookies repetidos, tokens de autenticação e cabeçalhos content-type custam quase zero bytes após a primeira requisição.

Negociação ALPN

Durante o handshake TLS, o peer anuncia h2 e http/1.1; o valor ALPN negociado seleciona o protocolo sem desperdiçar round-trips.

h2c por conhecimento prévio

Para links internos confiáveis e sidecars de service mesh, ambos os lados podem pular o ALPN e iniciar HTTP/2 em texto puro via HTTP2_PriorKnowledge.

Server push

O servidor pode enviar respostas PUSH_PROMISE de forma proativa; o cliente as expõe através de OnHTTP2StreamData para cache. Observação: descontinuado na web pública, mas ainda útil internamente.

Priorização de streams

Dicas de prioridade e dependência por stream permitem que respostas críticas (autenticação, navegação, resultados JSON-RPC) ultrapassem transferências volumosas na mesma conexão.

Controle de fluxo

O controle de fluxo WINDOW_UPDATE por stream e por conexão impede que uma resposta grande sufoque as menores — ajustável via frames SETTINGS.

TLS via OpenSSL ou SChannel

Defina TLSOptions.IOHandler como iohSChannel para TLS do kernel do Windows (sem DLLs) ou iohOpenSSL para suporte completo a 1.2/1.3 multiplataforma.

Onde o HTTP/2 brilha

Cenários prontos para uso em que a multiplexação e a economia de HPACK do HTTP/2 se pagam imediatamente.

Apple Push Notifications

A API provider do APNs da Apple exige HTTP/2. TsgcHTTP2Client conduz o componente Apple Push de ponta a ponta com autenticação baseada em token.

Firebase Cloud Messaging

A API FCM HTTP v1 do Google roda sobre HTTP/2. O mesmo componente dá suporte ao FCM com emissão de JWT por conta de serviço.

APIs REST e JSON modernas

A maioria das APIs em nuvem (Stripe, GitHub, Cloudflare, Google, Azure…) fala HTTP/2 por padrão — clientes multiplexados reduzem a latência em chamadas paralelas.

Tráfego entre serviços

Microsserviços internos atrás de um sidecar mesh usam HTTP/2 por conhecimento prévio (h2c) para multiplexar centenas de streams RPC em um único socket.

WebSocket + HTTP/2 na mesma porta

TsgcWebSocketHTTPServer atende HTTP/1.1, HTTP/2 e WebSocket em um único endpoint TLS — o ALPN roteia cada conexão automaticamente.

WebSocket sobre HTTP/2 (RFC 8441)

Para clientes que preferem tunelar frames WebSocket dentro de streams HTTP/2, ative Specifications.RFC8441 no servidor.

Cliente e servidor em poucas linhas

Solte o componente, configure o TLS, pronto. O ALPN negocia h2 para você durante o handshake.

uses
  sgcHTTP, sgcHTTP2;

var
  HTTP2: TsgcHTTP2Client;
begin
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel; // ou iohOpenSSL
  HTTP2.TLSOptions.Version   := tls1_2;

  // Adiciona cabeçalhos personalizados (comprimidos por HPACK)
  HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');

  // GET sobre HTTP/2 (ALPN negocia h2)
  Memo1.Text := HTTP2.Get('https://api.example.com/v1/items');
  ShowMessage(IntToStr(HTTP2.Response.Status));
end;
uses
  sgcWebSocket;

var
  Server: TsgcWebSocketHTTPServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'cert.pem';
  Server.SSLOptions.KeyFile  := 'key.pem';

  // HTTP/1.1, HTTP/2 e WebSocket na mesma porta TLS
  Server.Specifications.HTTP    := True;
  Server.Specifications.HTTP2   := True;
  Server.Specifications.RFC6455 := True;

  Server.Active := True;
end;
// uses: sgcHTTP, sgcHTTP2
TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->TLSOptions->IOHandler = iohSChannel;
HTTP2->Request->CustomHeaders->Add("authorization: Bearer eyJ...");
Memo1->Text = HTTP2->Get("https://api.example.com/v1/items");

Especificações e referências

Fontes oficiais para os protocolos que estes componentes implementam.

Documentação e demos

Links diretos para as páginas dos componentes, ajuda online e o projeto demo pronto para rodar que acompanha a versão de avaliação.

Cliente HTTP/2 — TsgcHTTP2Client Página do componente: recursos, exemplos de código e opções de TLS para o cliente.
Servidor HTTP/2 — TsgcWebSocketHTTPServer Página do componente: como habilitar HTTP/2 junto com HTTP/1.1 e WebSocket em uma única porta TLS.
Ajuda online — HTTP/2 Referência completa de propriedades, métodos e eventos dos componentes HTTP/2.
Projeto demo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Projeto de exemplo pronto para rodar. Acompanha o pacote sgcWebSockets — baixe a avaliação abaixo.
Manual do usuário (PDF) Manual completo cobrindo todos os componentes da biblioteca.

Pronto para usar HTTP/2?

Baixe a avaliação gratuita e adicione tráfego HTTP/2 multiplexado de cliente e servidor às suas aplicações Delphi.