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.
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.
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.
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.
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.
Un'implementazione di prim'ordine del framing HTTP/2 integrata sia nel client sia nel server HTTP WebSocket.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Client: Standard / Pro / Enterprise
Server: Pro / Enterprise
Tutti i vantaggi di HTTP/2 rispetto a HTTP/1.1 — in codice Delphi/C++Builder nativo, senza dover avviare un server web separato.
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.
Decine di richieste in transito condividono un'unica connessione TCP/TLS — nessun head-of-line blocking a livello HTTP, nessun socket aggiuntivo per richiesta.
Encoder/decoder HPACK integrato (RFC 7541). Cookie ripetuti, token di autenticazione e header content-type costano quasi zero byte dopo la prima richiesta.
Durante l'handshake TLS il peer annuncia h2 e http/1.1; il valore ALPN negoziato seleziona il protocollo senza sprecare round-trip.
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.
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.
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.
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.
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.
Scenari pronti all'uso in cui il multiplexing e i risparmi di HPACK di HTTP/2 si ripagano immediatamente.
L'API provider APNs di Apple richiede HTTP/2. TsgcHTTP2Client gestisce end-to-end il componente Apple Push con autenticazione basata su token.
L'API HTTP v1 di FCM di Google funziona su HTTP/2. Lo stesso componente alimenta FCM con generazione di JWT da service account.
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.
I microservizi interni dietro una mesh sidecar utilizzano HTTP/2 a conoscenza preventiva (h2c) per multiplexare centinaia di stream RPC su un unico socket.
TsgcWebSocketHTTPServer serve HTTP/1.1, HTTP/2 e WebSocket su un singolo endpoint TLS — ALPN instrada automaticamente ogni connessione.
Per i client che preferiscono incanalare i frame WebSocket all'interno di stream HTTP/2, abiliti Specifications.RFC8441 sul server.
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");
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. | Apri | |
| Server HTTP/2 — TsgcWebSocketHTTPServer Pagina del componente: come abilitare HTTP/2 insieme a HTTP/1.1 e WebSocket su un'unica porta TLS. | Apri | |
| Guida online — HTTP/2 Riferimento completo di proprietà, metodi ed eventi per i componenti HTTP/2. | Apri | |
| 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. | Apri | |
| Manuale utente (PDF) Manuale completo che copre ogni componente della libreria. | Apri |