Protocolo HTTP/2

Cliente y servidor HTTP/2 nativo para Delphi y C++Builder. Framing binario, multiplexación de streams, compresión de cabeceras HPACK y negociación ALPN — sin dependencia de IIS, Apache ni Indy.

Elija el lado que necesita

Dos componentes listos para producción que implementan el protocolo completo HTTP/2 (RFC 9113). Use el cliente para consumir APIs HTTP/2, use el servidor para publicarlas — o ambos en la misma aplicación.

TsgcHTTP2Client

Cliente HTTP/2 nativo — GET/POST/PUT/DELETE multiplexados sobre una sola conexión TLS, cabeceras comprimidas con HPACK, upgrade ALPN h2 o h2c mediante prior knowledge, gestión de server push y autenticación bearer / básica / NTLM.

Abrir Cliente HTTP/2 →

TsgcWebSocketHTTPServer

Servidor HTTP/2 nativo — el mismo servidor HTTP WebSocket sirve HTTP/1.1, HTTP/2 (h2) y WebSocket en un único puerto TLS. Negociación ALPN, multiplexación de streams, respuestas HPACK y bootstrap opcional de WebSocket sobre HTTP/2 según RFC 8441.

Abrir Servidor HTTP/2 →

HTTP/2 en sgcWebSockets

Una implementación de primera clase del framing HTTP/2 integrada tanto en el cliente como en el servidor HTTP WebSocket.

Estándar

HTTP/2 (RFC 9113)

Componentes

TsgcHTTP2Client
TsgcWebSocketHTTPServer

Plataformas

Windows, macOS, Linux, iOS, Android

Ediciones

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

Qué aporta HTTP/2

Todas las ventajas de HTTP/2 frente a HTTP/1.1 — en código Delphi/C++Builder nativo, sin necesidad de levantar un servidor web aparte.

Framing binario

Las peticiones y respuestas se dividen en frames binarios, analizados por una máquina de estados determinista. Se acaba el parseo de líneas de texto y la ambigüedad de HTTP/1.1.

Multiplexación de streams

Decenas de peticiones en curso comparten una sola conexión TCP/TLS — sin head-of-line blocking en la capa HTTP, sin sockets adicionales por petición.

Compresión de cabeceras HPACK

Encoder/decoder HPACK integrado (RFC 7541). Las cookies, tokens de autenticación y cabeceras content-type repetidas cuestan casi cero bytes a partir de la primera petición.

Negociación ALPN

Durante el handshake TLS el par anuncia h2 y http/1.1; el valor ALPN negociado selecciona el protocolo sin desperdiciar round-trips.

Prior knowledge h2c

Para enlaces internos de confianza y sidecars de service mesh, ambos lados pueden saltarse ALPN y arrancar HTTP/2 sobre texto plano mediante HTTP2_PriorKnowledge.

Server push

El servidor puede enviar proactivamente respuestas PUSH_PROMISE; el cliente las expone a través de OnHTTP2StreamData para cacheo. Nota: obsoleto en la web pública, todavía útil internamente.

Priorización de streams

Las pistas de prioridad y dependencia por stream permiten que las respuestas críticas (autenticación, navegación, resultados JSON-RPC) adelanten a las transferencias masivas en la misma conexión.

Control de flujo

El control de flujo WINDOW_UPDATE por stream y por conexión evita que una respuesta grande ahogue a las más pequeñas — ajustable mediante frames SETTINGS.

TLS vía OpenSSL o SChannel

Establezca TLSOptions.IOHandler en iohSChannel para TLS del kernel de Windows (sin DLLs) o en iohOpenSSL para soporte multiplataforma completo de 1.2/1.3.

Dónde brilla HTTP/2

Escenarios listos para usar donde la multiplexación y el ahorro de HPACK de HTTP/2 se amortizan de inmediato.

Notificaciones push de Apple

La API de proveedor APNs de Apple requiere HTTP/2. TsgcHTTP2Client impulsa de extremo a extremo el componente Apple Push con autenticación basada en token.

Firebase Cloud Messaging

La API HTTP v1 de FCM de Google funciona sobre HTTP/2. El mismo componente impulsa FCM con la generación de JWT mediante cuenta de servicio.

APIs REST y JSON modernas

La mayoría de las APIs cloud (Stripe, GitHub, Cloudflare, Google, Azure…) hablan HTTP/2 por defecto — los clientes multiplexados reducen la latencia en llamadas en paralelo.

Tráfico servicio a servicio

Los microservicios internos tras una sidecar mesh usan HTTP/2 prior knowledge (h2c) para multiplexar cientos de streams RPC sobre un único socket.

WebSocket + HTTP/2 en un mismo puerto

TsgcWebSocketHTTPServer sirve HTTP/1.1, HTTP/2 y WebSocket en un único endpoint TLS — ALPN enruta cada conexión automáticamente.

WebSocket sobre HTTP/2 (RFC 8441)

Para clientes que prefieran tunelizar frames WebSocket dentro de streams HTTP/2, active Specifications.RFC8441 en el servidor.

Cliente y servidor en unas pocas líneas

Coloque el componente, configure TLS y listo. ALPN negocia h2 por usted durante el handshake.

uses
  sgcHTTP, sgcHTTP2;

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

  // Añade cabeceras personalizadas (comprimidas 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 y WebSocket en el mismo puerto 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");

Especificaciones y referencias

Fuentes autorizadas para los protocolos que implementan estos componentes.

Documentación y demos

Enlaces directos a las páginas de los componentes, la ayuda en línea y el proyecto demo listo para ejecutar incluido en la versión de prueba.

Cliente HTTP/2 — TsgcHTTP2Client Página del componente: características, ejemplos de código y opciones TLS del cliente.
Servidor HTTP/2 — TsgcWebSocketHTTPServer Página del componente: cómo activar HTTP/2 junto con HTTP/1.1 y WebSocket en un único puerto TLS.
Ayuda en línea — HTTP/2 Referencia completa de propiedades, métodos y eventos de los componentes HTTP/2.
Proyecto demo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Proyecto de ejemplo listo para ejecutar. Incluido en el paquete sgcWebSockets — descargue la versión de prueba abajo.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca.

¿Listo para usar HTTP/2?

Descargue la versión de prueba gratuita y añada tráfico cliente y servidor HTTP/2 multiplexado a sus aplicaciones Delphi.