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.

Choisissez le côté dont vous avez besoin

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.

TsgcHTTP2Client

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.

Ouvrir le client HTTP/2 →

TsgcWebSocketHTTPServer

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.

Ouvrir le serveur HTTP/2 →

HTTP/2 dans sgcWebSockets

Une implémentation de premier ordre du tramage HTTP/2 intégrée à la fois au client et au serveur HTTP WebSocket.

Composants

TsgcHTTP2Client
TsgcWebSocketHTTPServer

Plateformes

Windows, macOS, Linux, iOS, Android

Éditions

Client : Standard / Pro / Enterprise
Serveur : Pro / Enterprise

Ce qu'apporte HTTP/2

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é.

Tramage binaire

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.

Multiplexage de flux

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.

Compression d'en-têtes HPACK

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.

Négociation ALPN

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é.

h2c en connaissance préalable

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.

Server push

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.

Priorisation des flux

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.

Contrôle de flux

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.

TLS via OpenSSL ou SChannel

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.

Où HTTP/2 fait la différence

Scénarios prêts à l'emploi où le multiplexage et les économies HPACK de HTTP/2 sont immédiatement rentables.

Apple Push Notifications

L'API APNs d'Apple exige HTTP/2. TsgcHTTP2Client pilote le composant Apple Push de bout en bout avec authentification par jeton.

Firebase Cloud Messaging

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.

API REST et JSON modernes

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.

Trafic de service à service

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.

WebSocket et HTTP/2 sur un seul port

TsgcWebSocketHTTPServer sert HTTP/1.1, HTTP/2 et WebSocket sur un seul point d'accès TLS — ALPN aiguille automatiquement chaque connexion.

WebSocket sur HTTP/2 selon la RFC 8441

Pour les clients qui préfèrent encapsuler les trames WebSocket dans des flux HTTP/2, activez Specifications.RFC8441 sur le serveur.

Client et serveur en quelques lignes

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");

Spécifications et références

Sources faisant autorité pour les protocoles que ces composants implémentent.

Documentation et démos

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.
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.
Aide en ligne — HTTP/2 Référence complète des propriétés, méthodes et événements des composants HTTP/2.
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.
Manuel utilisateur (PDF) Manuel complet couvrant chaque composant de la bibliothèque.

Prêt à utiliser HTTP/2 ?

Téléchargez la version d'essai gratuite et ajoutez du trafic HTTP/2 multiplexé, client et serveur, à vos applications Delphi.