Protocole HTTP/2
Client et serveur HTTP/2 natifs pour Delphi et C++Builder. Tramage binaire, multiplexage de flux, compression d'en-têtes HPACK et négociation ALPN — sans dépendance à IIS, Apache ou Indy.
Client et serveur HTTP/2 natifs pour Delphi et C++Builder. Tramage binaire, multiplexage de flux, compression d'en-têtes HPACK et négociation ALPN — sans dépendance à IIS, Apache ou Indy.
Deux composants prêts pour la production implémentent l'intégralité du protocole HTTP/2 (RFC 9113). Utilisez le client pour consommer des API HTTP/2, utilisez le serveur pour les publier — ou les deux au sein de la même application.
Client HTTP/2 natif — GET/POST/PUT/DELETE multiplexés sur une seule connexion TLS, en-têtes compressés via HPACK, mise à niveau ALPN h2 ou h2c en connaissance préalable, gestion du server push et authentification bearer / basic / NTLM.
Serveur HTTP/2 natif — le même serveur HTTP WebSocket sert HTTP/1.1, HTTP/2 (h2) et WebSocket sur un seul port TLS. Négociation ALPN, multiplexage de flux, réponses HPACK et amorçage optionnel WebSocket sur HTTP/2 selon la RFC 8441.
Une implémentation de premier ordre du tramage HTTP/2 intégrée à la fois au client et au serveur HTTP WebSocket.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Client : Standard / Pro / Enterprise
Serveur : Pro / Enterprise
Tous les bénéfices de HTTP/2 par rapport à HTTP/1.1 — en code Delphi/C++Builder natif, sans avoir à lancer un serveur web séparé.
Les requêtes et les réponses sont découpées en trames binaires, analysées par une machine à états déterministe. Fini l'analyse ligne par ligne ou les ambiguïtés de HTTP/1.1.
Des dizaines de requêtes en cours partagent une seule connexion TCP/TLS — plus de blocage en tête de file au niveau HTTP, ni de sockets supplémentaires par requête.
Encodeur/décodeur HPACK intégré (RFC 7541). Les cookies, jetons d'authentification et en-têtes content-type répétés ne coûtent presque rien après la première requête.
Durant la poignée de main TLS, le pair annonce h2 et http/1.1 ; la valeur ALPN négociée sélectionne le protocole sans aucun aller-retour gaspillé.
Pour les liens internes de confiance et les side-cars de service mesh, les deux extrémités peuvent ignorer ALPN et démarrer HTTP/2 en clair via HTTP2_PriorKnowledge.
Le serveur peut envoyer proactivement des réponses PUSH_PROMISE ; le client les expose via OnHTTP2StreamData pour la mise en cache. Note : déprécié sur le web public, mais toujours utile en interne.
Les indications de priorité et de dépendance par flux permettent aux réponses critiques (authentification, navigation, résultats JSON-RPC) de dépasser les transferts volumineux sur la même connexion.
Le contrôle de flux WINDOW_UPDATE par flux et par connexion empêche une réponse volumineuse de priver les plus petites — ajustable via les trames SETTINGS.
Affectez iohSChannel à TLSOptions.IOHandler pour le TLS noyau Windows (sans DLL) ou iohOpenSSL pour une prise en charge multiplateforme complète de 1.2/1.3.
Scénarios prêts à l'emploi où le multiplexage et les économies HPACK de HTTP/2 sont immédiatement rentables.
L'API APNs d'Apple exige HTTP/2. TsgcHTTP2Client pilote le composant Apple Push de bout en bout avec authentification par jeton.
L'API HTTP v1 de FCM de Google fonctionne sur HTTP/2. Le même composant alimente FCM avec la génération de JWT par compte de service.
La plupart des API cloud (Stripe, GitHub, Cloudflare, Google, Azure…) utilisent HTTP/2 par défaut — les clients multiplexés réduisent la latence des appels parallèles.
Les microservices internes derrière un side-car mesh utilisent HTTP/2 en connaissance préalable (h2c) pour multiplexer des centaines de flux RPC sur un seul socket.
TsgcWebSocketHTTPServer sert HTTP/1.1, HTTP/2 et WebSocket sur un seul point d'accès TLS — ALPN aiguille automatiquement chaque connexion.
Pour les clients qui préfèrent encapsuler les trames WebSocket dans des flux HTTP/2, activez Specifications.RFC8441 sur le serveur.
Déposez le composant, configurez TLS, et c'est parti. ALPN négocie h2 pour vous durant la poignée de main.
uses
sgcHTTP, sgcHTTP2;
var
HTTP2: TsgcHTTP2Client;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.TLSOptions.IOHandler := iohSChannel; // ou iohOpenSSL
HTTP2.TLSOptions.Version := tls1_2;
// Ajouter des en-têtes personnalisés (compressés par HPACK)
HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');
// GET sur HTTP/2 (ALPN négocie 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 et WebSocket sur le même port 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");
Liens directs vers les pages des composants, l'aide en ligne et le projet de démonstration prêt à l'emploi fourni dans la version d'essai.
| Client HTTP/2 — TsgcHTTP2Client Page du composant : fonctionnalités, exemples de code et options TLS pour le client. | Ouvrir | |
| Serveur HTTP/2 — TsgcWebSocketHTTPServer Page du composant : comment activer HTTP/2 aux côtés de HTTP/1.1 et WebSocket sur un seul port TLS. | Ouvrir | |
| Aide en ligne — HTTP/2 Référence complète des propriétés, méthodes et événements des composants HTTP/2. | Ouvrir | |
| Projet de démonstration — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Projet d'exemple prêt à exécuter. Inclus dans le paquet sgcWebSockets — téléchargez la version d'essai ci-dessous. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel complet couvrant chaque composant de la bibliothèque. | Ouvrir |