Cliente y Servidor QUIC
TsgcQUICClient y TsgcQUICServer hablan QUIC puro: varios streams independientes en una sola conexión cifrada, datagramas no fiables y migración de conexión cuando la dirección IP del cliente cambia a mitad de sesión.
TCP más TLS necesita tres viajes de ida y vuelta antes de que llegue el primer byte de una respuesta. QUIC combina el transporte y el handshake criptográfico en uno solo, y una conexión reanudada puede enviar datos en el primerísimo paquete. sgcQUIC ofrece a Delphi, C++ Builder y .NET un transporte QUIC nativo y un cliente y servidor HTTP/3 construidos sobre él, sobre el motor QUIC de OpenSSL 3.5.
sgcQUIC no es una implementación parcial. El transporte, el framing, la compresión de cabeceras y la extensión WebTransport están todos cubiertos, sobre el motor QUIC nativo de OpenSSL 3.5.
Un transporte QUIC puro y un cliente y servidor HTTP/3 para Delphi, C++ Builder y .NET. Un complemento de sgcWebSockets Enterprise, sobre el mismo motor QUIC nativo de OpenSSL 3.5. Código fuente completo, despliegue libre de royalties.
Usa TsgcQUICClient y TsgcQUICServer para un transporte desnudo con tu propio framing, o recurre directamente a TsgcHTTP3Client y TsgcHTTP3Server cuando el formato de la conexión es HTTP.
TsgcQUICClient y TsgcQUICServer hablan QUIC puro: varios streams independientes en una sola conexión cifrada, datagramas no fiables y migración de conexión cuando la dirección IP del cliente cambia a mitad de sesión.
TsgcHTTP3Client y TsgcHTTP3Server añaden la semántica HTTP encima: cabeceras de petición y respuesta comprimidas con QPACK, descubrimiento con Alt-Svc, y los mismos métodos y códigos de estado que ya usa tu código HTTP/2.
Un cliente que ya se ha conectado antes puede enviar su primera petición en el primerísimo paquete, antes de que termine el handshake.
Un Connection ID identifica la sesión, no la dirección IP, de modo que un teléfono que pasa de Wi-Fi a datos móviles mantiene sus streams abiertos.
Streams bidireccionales y datagramas no fiables sobre una sola petición Extended CONNECT, para clientes de navegador que hablan WebTransport.
Guías paso a paso para los componentes QUIC y HTTP/3:
La misma forma que cualquier otro cliente HTTP de sgcWebSockets: define propiedades, gestiona un evento, llama a un método.
uses
sgcHTTP3_Client;
var
vClient: TsgcHTTP3Client;
begin
vClient := TsgcHTTP3Client.Create(nil);
vClient.Host := 'api.example.com';
vClient.Port := 443;
vClient.OnResponse :=
procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
begin
Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
end;
vClient.OnAltSvc :=
procedure(Sender: TObject; const AAltSvc: string)
begin
Memo1.Lines.Add('Alt-Svc: ' + AAltSvc); // h3 advertised over HTTP/2
end;
vClient.Connect;
vClient.Get('/pets/42');
end;
uses
sgcQUIC_Client;
var
vQUIC: TsgcQUICClient;
begin
vQUIC := TsgcQUICClient.Create(nil);
vQUIC.Host := 'quic.example.com';
vQUIC.Port := 4433;
vQUIC.EnableMultiStream := True;
vQUIC.OnQUICConnect :=
procedure(Sender: TObject)
var
vStreamId: Int64;
begin
vStreamId := vQUIC.OpenStream;
vQUIC.WriteData(vStreamId, 'ping');
end;
vQUIC.OnQUICStreamData :=
procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
begin
Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
end;
vQUIC.Active := True;
end;
El cliente y el servidor comparten el mismo modelo de conexión, stream y datagrama en ambos lados. La matriz de características completa →
TsgcHTTP3Server habla HTTP/3 sobre QUIC en un puerto UDP, mientras que un emparejamiento al estilo TsgcHTTP3ServerBridge con un servidor HTTP/2 existente permite que los clientes heredados sigan funcionando sobre TCP. Anuncia Alt-Svc y los clientes modernos se actualizan solos.
uses
sgcHTTP3_Server;
procedure TForm1.FormCreate(Sender: TObject);
begin
FServer := TsgcHTTP3Server.Create(nil);
FServer.Port := 443;
FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
FServer.QUICOptions.SSLOptions.KeyFile := 'server.key';
// One handler for every incoming HTTP/3 request
FServer.OnH3Request :=
procedure(const Ctx: TsgcHTTP3Context)
begin
if Ctx.Path = '/pets/42' then
Ctx.RespondJSON(200, '{"name":"Rex"}')
else
Ctx.Respond(404, 'Not found');
end;
FServer.Active := True;
end;
Un único componente Delphi que termina QUIC, negocia h3 y enruta cada petición a un solo manejador, con el mismo certificado que ya carga tu servidor HTTP/2.
Una respuesta HTTP/2 normal lleva una cabecera Alt-Svc: h3=":443". Los clientes que la entienden abren QUIC en la siguiente petición, sin una redirección ni un segundo dominio.
Una petición Extended CONNECT actualiza un stream a WebTransport, dando a un cliente de navegador streams bidireccionales y datagramas junto a las peticiones HTTP/3 normales.
El handshake de QUIC y TLS 1.3 se ejecuta en el propio motor QUIC de OpenSSL 3.5. No hay ninguna librería QUIC aparte que compilar ni distribuir.
sgcQUIC es un complemento de sgcWebSockets Enterprise, así que la licencia, el canal de soporte y el ritmo de actualizaciones son los que ya tienes.
sgcQUIC es una de las nueve librerías de componentes de eSeGeCe para Delphi, C++ Builder y .NET. Comparten convenciones, se entregan con código fuente completo y se despliegan libres de royalties.
Transporte QUIC puro y un cliente y servidor HTTP/3, con WebTransport. Un complemento de sgcWebSockets Enterprise.
Más información →WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA y más de 30 integraciones de APIs. La licencia Enterprise sobre la que se construye sgcQUIC.
Más información →Componentes HTML y de UI en servidor sobre Bootstrap 5 y htmx. Sirve la UI renderizada sobre el mismo transporte HTTP/3.
Más información →Componentes de IA, LLM y MCP para Delphi y C++ Builder. Siete proveedores de LLM tras un único componente, más MCP, embeddings y voz. Producto independiente, con el runtime sgcWebSockets Core incluido.
Más información →Componentes cliente de MQTT, AMQP 0.9.1 y 1.0, Apache Kafka y STOMP para Delphi y C++ Builder. Producto independiente, con el runtime sgcWebSockets Core incluido.
Más información →Cliente OAuth2, cliente JWT y soporte para WebAuthn en Delphi y C++ Builder. Inicia sesión con cualquier proveedor OAuth2/OIDC, emite y verifica JWT, y añade autenticación con passkeys a tus aplicaciones nativas. Producto independiente, con el runtime sgcWebSockets Core incluido.
Más información →Cliente HTTP/2, cliente gRPC y clientes de Google Cloud Pub/Sub, Calendar y FCM para Delphi y C++ Builder. Producto independiente, con el runtime sgcWebSockets Core incluido.
Más información →Servidor REST, servidor OpenAPI y componentes de cliente OpenAPI para Delphi y C++ Builder. Publica APIs REST a partir de un contrato OpenAPI 3.x, o consume cualquier API descrita con OpenAPI. Producto independiente, con el runtime sgcWebSockets Core incluido.
Más información →Parser de OpenAPI 3.x, generador nativo de SDK Pascal, componente servidor OpenAPI y más de 1.195 SDK de nube preconstruidos.
Más información →XAdES, PAdES, CAdES y ASiC para documentos, Authenticode, ClickOnce, NuGet y VSIX para código.
Más información →Windows Hello, sensores de huella dactilar y el Windows Biometric Framework para Delphi y C++ Builder.
Más información →Componentes Indy TCP/IP actualizados con TLS moderno, IPv6 y HTTP/2 para Delphi 7 a 13.
Más información →La confianza de desarrolladores de Delphi, C++ Builder, Lazarus y .NET en todo el mundo.
Vuestra librería sgcWebSockets es muy útil y fácil de configurar. ¡Seguid así!
sgcWebSockets es increíble y vuestro soporte es el mejor.
Muchas gracias por vuestra ayuda y soporte, me encantan vuestros componentes.