Serveur HTTP/2

Sers HTTP/2 (h2) aux côtés de HTTP/1.1 et WebSocket sur un seul port TLS via TsgcWebSocketHTTPServer. La négociation ALPN, HPACK et le multiplexage de streams sont intégrés.

TsgcWebSocketHTTPServer

Le même TsgcWebSocketHTTPServer utilisé pour WebSocket et HTTP/1.1 sert aussi HTTP/2 sur TLS — bascule Specifications.HTTP2, ALPN s'occupe du reste.

Classe du composant

TsgcWebSocketHTTPServer

Protocole

HTTP/2 (RFC 9113)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Professional / Enterprise

Active HTTP/2 avec une seule propriété

Sur une instance TsgcWebSocketHTTPServer, active TLS et bascule Specifications.HTTP2 — la négociation ALPN h2 gère automatiquement l'upgrade.

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';

  // Allow HTTP/1.1, HTTP/2 and WebSocket on the same port
  Server.Specifications.HTTP   := True;
  Server.Specifications.HTTP2  := True;
  Server.Specifications.RFC6455 := True;

  Server.OnCommandGet := procedure(AContext: TIdContext;
    ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo)
  begin
    AResponseInfo.ContentText := 'Hello over HTTP/' + IfThen(ARequestInfo.HTTP2, '2', '1.1');
  end;

  Server.Active := True;
end;
// uses: sgcWebSocket
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
Server->Port = 443;
Server->SSL  = true;
Server->Specifications->HTTP2 = true;
Server->Active = true;

Ce qu’il y a à l’intérieur

TsgcWebSocketHTTPServer avec HTTP/2 activé — partage un seul endpoint TLS entre HTTP/1.1, HTTP/2 et WebSocket.

Négociation ALPN

Pendant le handshake TLS, le serveur annonce à la fois http/1.1 et h2. Le client choisit le protocole ; le serveur dispatche en conséquence — aucune socket d'écoute séparée nécessaire.

Coexistence avec WebSocket

Les clients WebSocket continuent à faire l'upgrade via le chemin HTTP/1.1. La RFC 8441 (bootstrap WebSocket sur HTTP/2) est prise en charge via Specifications.RFC8441.

HPACK + framing de streams

Encodeur HPACK intégré pour les en-têtes de réponse et un cœur de multiplexage qui dispatche chaque requête sur son propre stream-id, en respectant les indications de priorité.

Server push

Le server push (PUSH_PROMISE) est pris en charge mais désormais déprécié — les clients modernes l'ignorent ; envisage plutôt 103 Early Hints ou HTTP/3 pour les indications.

TLS choice

Règle SSLOptions.IOHandler sur iohOpenSSL (multiplateforme) ou iohSChannel (Windows). HTTP/2 requiert TLS 1.2+ selon le déploiement RFC 7540 / 9113.

Métriques de connexion

Chaque connexion HTTP/2 expose le nombre de streams, les estimations RTT, le total des octets in/out et les paramètres de la trame SETTINGS négociés via OnHTTP2Settings.

Spécifications et références

Sources de référence pour le protocole implémenté par ce composant.

Documentation et démos

Lien direct vers la référence du composant, récupère le projet de démo prêt à exécuter et télécharge l’essai.

Aide en ligne — TsgcWebSocketHTTPServer Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Projet d’exemple prêt à exécuter. Livré dans le paquet sgcWebSockets — télécharge l’essai ci-dessous.
Document technique (PDF) Features, quick start, code samples for Delphi & C++ Builder and primary-source references — this component only.
Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque.

Prêt à servir HTTP/2 depuis Delphi ?

Télécharge l'essai gratuit et sers HTTP/1.1, HTTP/2 et WebSocket depuis un seul endpoint TLS.