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.
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.
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.
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.
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.
Una implementación de primera clase del framing HTTP/2 integrada tanto en el cliente como en el servidor HTTP WebSocket.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Cliente: Standard / Pro / Enterprise
Servidor: Pro / Enterprise
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.
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.
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.
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.
Durante el handshake TLS el par anuncia h2 y http/1.1; el valor ALPN negociado selecciona el protocolo sin desperdiciar round-trips.
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.
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.
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.
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.
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.
Escenarios listos para usar donde la multiplexación y el ahorro de HPACK de HTTP/2 se amortizan de inmediato.
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.
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.
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.
Los microservicios internos tras una sidecar mesh usan HTTP/2 prior knowledge (h2c) para multiplexar cientos de streams RPC sobre un único socket.
TsgcWebSocketHTTPServer sirve HTTP/1.1, HTTP/2 y WebSocket en un único endpoint TLS — ALPN enruta cada conexión automáticamente.
Para clientes que prefieran tunelizar frames WebSocket dentro de streams HTTP/2, active Specifications.RFC8441 en el servidor.
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");
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. | Abrir | |
| 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. | Abrir | |
| Ayuda en línea — HTTP/2 Referencia completa de propiedades, métodos y eventos de los componentes HTTP/2. | Abrir | |
| 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. | Abrir | |
| Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca. | Abrir |