Server HTTP/2

Servi HTTP/2 (h2) insieme a HTTP/1.1 e WebSocket su un'unica porta TLS tramite TsgcWebSocketHTTPServer. Negoziazione ALPN, HPACK e multiplexing degli stream sono integrati.

TsgcWebSocketHTTPServer

Lo stesso TsgcWebSocketHTTPServer usato per WebSocket e HTTP/1.1 serve anche HTTP/2 su TLS — attiva Specifications.HTTP2, ad ALPN pensa al resto.

Classe del componente

TsgcWebSocketHTTPServer

Protocollo

HTTP/2 (RFC 9113)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Professional / Enterprise

Attiva HTTP/2 con una sola proprietà

Su un'istanza TsgcWebSocketHTTPServer abilita TLS e attiva Specifications.HTTP2 — la negoziazione ALPN h2 gestisce automaticamente 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';

  // Consenti HTTP/1.1, HTTP/2 e WebSocket sulla stessa porta
  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;

Cosa contiene

TsgcWebSocketHTTPServer con HTTP/2 abilitato — condividi un singolo endpoint TLS tra HTTP/1.1, HTTP/2 e WebSocket.

Negoziazione ALPN

Durante l'handshake TLS il server annuncia sia http/1.1 sia h2. Il client sceglie il protocollo; il server smista di conseguenza — non serve un socket di ascolto separato.

Coesistenza con WebSocket

I client WebSocket effettuano comunque l'upgrade tramite il percorso HTTP/1.1. La RFC 8441 (Bootstrapping WebSockets with HTTP/2) è supportata tramite Specifications.RFC8441.

HPACK + framing degli stream

Encoder HPACK integrato per gli header di risposta e un core di multiplexing degli stream che smista ogni richiesta sul proprio stream-id, rispettando gli hint di priorità.

Server push

Il server push (PUSH_PROMISE) è supportato ma ora è deprecato — i client moderni lo ignorano; considera invece 103 Early Hints o HTTP/3 per gli hint.

Scelta TLS

Imposta SSLOptions.IOHandler su iohOpenSSL (multipiattaforma) o iohSChannel (Windows). HTTP/2 richiede TLS 1.2+ secondo il deployment di RFC 7540 / 9113.

Metriche di connessione

Ogni connessione HTTP/2 espone il numero di stream, le stime di RTT, i byte totali in/out e i parametri del frame SETTINGS negoziati tramite OnHTTP2Settings.

Specifiche e riferimenti

Fonti autorevoli per il protocollo implementato da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online — TsgcWebSocketHTTPServer Riferimento completo di proprietà, metodi ed eventi per questo componente.
Progetto demo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.

Pronto a servire HTTP/2 da Delphi?

Scarica la versione di prova gratuita e servi HTTP/1.1, HTTP/2 e WebSocket da un unico endpoint TLS.