Protocollo HTTP/2

Client e server HTTP/2 nativi per Delphi e C++Builder. Framing binario, multiplexing di stream, compressione degli header HPACK e negoziazione ALPN — senza dipendenza da IIS, Apache o Indy.

Scelga il lato che le serve

Due componenti pronti per la produzione implementano l'intero protocollo wire HTTP/2 (RFC 9113). Utilizzi il client per consumare API HTTP/2, utilizzi il server per pubblicarle — oppure entrambi all'interno della stessa applicazione.

TsgcHTTP2Client

Client HTTP/2 nativo — GET/POST/PUT/DELETE multiplexati su una singola connessione TLS, header compressi con HPACK, upgrade ALPN h2 o h2c a conoscenza preventiva, gestione del server-push e autenticazione bearer / basic / NTLM.

Apri Client HTTP/2 →

TsgcWebSocketHTTPServer

Server HTTP/2 nativo — lo stesso server HTTP WebSocket serve HTTP/1.1, HTTP/2 (h2) e WebSocket su un'unica porta TLS. Negoziazione ALPN, multiplexing di stream, risposte HPACK e bootstrap opzionale RFC 8441 WebSocket-over-HTTP/2.

Apri Server HTTP/2 →

HTTP/2 in sgcWebSockets

Un'implementazione di prim'ordine del framing HTTP/2 integrata sia nel client sia nel server HTTP WebSocket.

Componenti

TsgcHTTP2Client
TsgcWebSocketHTTPServer

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizioni

Client: Standard / Pro / Enterprise
Server: Pro / Enterprise

Cosa offre HTTP/2

Tutti i vantaggi di HTTP/2 rispetto a HTTP/1.1 — in codice Delphi/C++Builder nativo, senza dover avviare un server web separato.

Framing binario

Le richieste e le risposte sono suddivise in frame binari, analizzati da una macchina a stati deterministica. Niente più parsing di righe di testo o ambiguità di HTTP/1.1.

Multiplexing di stream

Decine di richieste in transito condividono un'unica connessione TCP/TLS — nessun head-of-line blocking a livello HTTP, nessun socket aggiuntivo per richiesta.

Compressione header HPACK

Encoder/decoder HPACK integrato (RFC 7541). Cookie ripetuti, token di autenticazione e header content-type costano quasi zero byte dopo la prima richiesta.

Negoziazione ALPN

Durante l'handshake TLS il peer annuncia h2 e http/1.1; il valore ALPN negoziato seleziona il protocollo senza sprecare round-trip.

h2c a conoscenza preventiva

Per collegamenti interni affidabili e sidecar di service mesh, entrambi i lati possono saltare l'ALPN e avviare HTTP/2 in chiaro tramite HTTP2_PriorKnowledge.

Server push

Il server può inviare proattivamente risposte PUSH_PROMISE; il client le espone tramite OnHTTP2StreamData per il caching. Nota: deprecato sul web pubblico, ma ancora utile internamente.

Priorità degli stream

Suggerimenti di priorità e dipendenza per stream consentono a risposte critiche (autenticazione, navigazione, risultati JSON-RPC) di sopravanzare i trasferimenti in massa sulla stessa connessione.

Controllo di flusso

Il controllo di flusso WINDOW_UPDATE per stream e per connessione impedisce che una risposta di grandi dimensioni affami quelle più piccole — configurabile tramite frame SETTINGS.

TLS tramite OpenSSL o SChannel

Imposti TLSOptions.IOHandler su iohSChannel per il TLS del kernel Windows (senza DLL) oppure su iohOpenSSL per il pieno supporto cross-platform di TLS 1.2/1.3.

Dove brilla HTTP/2

Scenari pronti all'uso in cui il multiplexing e i risparmi di HPACK di HTTP/2 si ripagano immediatamente.

Apple Push Notifications

L'API provider APNs di Apple richiede HTTP/2. TsgcHTTP2Client gestisce end-to-end il componente Apple Push con autenticazione basata su token.

Firebase Cloud Messaging

L'API HTTP v1 di FCM di Google funziona su HTTP/2. Lo stesso componente alimenta FCM con generazione di JWT da service account.

API REST e JSON moderne

La maggior parte delle API cloud (Stripe, GitHub, Cloudflare, Google, Azure…) parla HTTP/2 per impostazione predefinita — i client multiplexati riducono la latenza nelle chiamate parallele.

Traffico service-to-service

I microservizi interni dietro una mesh sidecar utilizzano HTTP/2 a conoscenza preventiva (h2c) per multiplexare centinaia di stream RPC su un unico socket.

WebSocket + HTTP/2 sulla stessa porta

TsgcWebSocketHTTPServer serve HTTP/1.1, HTTP/2 e WebSocket su un singolo endpoint TLS — ALPN instrada automaticamente ogni connessione.

RFC 8441 WebSocket su HTTP/2

Per i client che preferiscono incanalare i frame WebSocket all'interno di stream HTTP/2, abiliti Specifications.RFC8441 sul server.

Client e server in poche righe

Inserisca il componente, imposti il TLS, esegua. ALPN negozia h2 per lei durante l'handshake.

uses
  sgcHTTP, sgcHTTP2;

var
  HTTP2: TsgcHTTP2Client;
begin
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel; // oppure iohOpenSSL
  HTTP2.TLSOptions.Version   := tls1_2;

  // Aggiunge header personalizzati (compressi tramite HPACK)
  HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');

  // GET su HTTP/2 (ALPN negozia 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 e WebSocket sulla stessa porta 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");

Specifiche e riferimenti

Fonti autorevoli per i protocolli implementati da questi componenti.

Documentazione e demo

Collegamenti diretti alle pagine dei componenti, alla guida online e al progetto demo pronto all'uso incluso nella trial.

Client HTTP/2 — TsgcHTTP2Client Pagina del componente: funzionalità, esempi di codice e opzioni TLS per il client.
Server HTTP/2 — TsgcWebSocketHTTPServer Pagina del componente: come abilitare HTTP/2 insieme a HTTP/1.1 e WebSocket su un'unica porta TLS.
Guida online — HTTP/2 Riferimento completo di proprietà, metodi ed eventi per i componenti HTTP/2.
Progetto demo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarichi la trial qui sotto.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.

Pronto a utilizzare HTTP/2?

Scarichi la trial gratuita e aggiunga traffico client e server HTTP/2 multiplexato alle sue applicazioni Delphi.