HTTP/2-protocol
Native HTTP/2-client en -server voor Delphi en C++Builder. Binaire framing, stream-multiplexing, HPACK header-compressie en ALPN-onderhandeling — zonder afhankelijkheid van IIS, Apache of Indy.
Native HTTP/2-client en -server voor Delphi en C++Builder. Binaire framing, stream-multiplexing, HPACK header-compressie en ALPN-onderhandeling — zonder afhankelijkheid van IIS, Apache of Indy.
Twee productieklare componenten implementeren het volledige HTTP/2 (RFC 9113) wire-protocol. Gebruik de client om HTTP/2-API's te consumeren, gebruik de server om ze te publiceren — of beide binnen dezelfde toepassing.
Native HTTP/2-client — gemultiplexte GET/POST/PUT/DELETE over één TLS-verbinding, HPACK-gecomprimeerde headers, ALPN h2-upgrade of prior-knowledge h2c, afhandeling van server push en bearer-, basic- of NTLM-authenticatie.
Native HTTP/2-server — dezelfde WebSocket HTTP-server bedient HTTP/1.1, HTTP/2 (h2) en WebSocket op één TLS-poort. ALPN-onderhandeling, stream-multiplexing, HPACK-responses en optionele RFC 8441 WebSocket-over-HTTP/2-bootstrap.
Een eersteklas implementatie van HTTP/2-framing, geïntegreerd in zowel de client als de WebSocket HTTP-server.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Client: Standard / Pro / Enterprise
Server: Pro / Enterprise
Alle voordelen van HTTP/2 boven HTTP/1.1 — in native Delphi/C++Builder-code, zonder een aparte webserver te hoeven starten.
Requests en responses worden opgesplitst in binaire frames, geparsed door een deterministische state machine. Geen tekstregel-parsing of HTTP/1.1-ambiguïteit meer.
Tientallen lopende requests delen één TCP/TLS-verbinding — geen head-of-line blocking op de HTTP-laag, geen extra sockets per request.
Ingebouwde HPACK-encoder/decoder (RFC 7541). Herhaalde cookies, auth-tokens en content-type-headers kosten bijna nul bytes na de eerste request.
Tijdens de TLS-handshake adverteert de peer h2 en http/1.1; de onderhandelde ALPN-waarde selecteert het protocol zonder verspilde round-trips.
Voor vertrouwde interne verbindingen en service-mesh-sidecars kunnen beide zijden ALPN overslaan en HTTP/2 over plaintext starten via HTTP2_PriorKnowledge.
De server kan proactief PUSH_PROMISE-responses sturen; de client geeft ze door via OnHTTP2StreamData voor caching. Let op: afgeschaft op het publieke web, intern nog steeds nuttig.
Prioriteit- en dependency-hints per stream laten kritieke responses (auth, navigatie, JSON-RPC-resultaten) bulkoverdrachten op dezelfde verbinding inhalen.
WINDOW_UPDATE flow control per stream en per verbinding voorkomt dat één grote response kleinere uithongert — instelbaar via SETTINGS-frames.
Zet TLSOptions.IOHandler op iohSChannel voor Windows kernel-TLS (zonder DLL's) of iohOpenSSL voor volledige cross-platform-ondersteuning van 1.2/1.3.
Drop-in-scenario's waarin de multiplexing- en HPACK-besparingen van HTTP/2 zich onmiddellijk terugbetalen.
De APNs provider-API van Apple vereist HTTP/2. TsgcHTTP2Client stuurt de Apple Push-component end-to-end aan met token-gebaseerde authenticatie.
Google's FCM HTTP v1-API draait over HTTP/2. Dezelfde component drijft FCM aan met service-account-JWT-uitgifte.
De meeste cloud-API's (Stripe, GitHub, Cloudflare, Google, Azure…) spreken standaard HTTP/2 — gemultiplexte clients verlagen de latency bij parallelle calls.
Interne microservices achter een sidecar-mesh gebruiken HTTP/2 prior-knowledge (h2c) om honderden RPC-streams over één socket te multiplexen.
TsgcWebSocketHTTPServer bedient HTTP/1.1, HTTP/2 en WebSocket op één TLS-endpoint — ALPN routeert elke verbinding automatisch.
Voor clients die WebSocket-frames liever via HTTP/2-streams tunnelen, schakelt u Specifications.RFC8441 in op de server.
Plaats het component, stel TLS in, klaar. ALPN onderhandelt h2 voor u tijdens de handshake.
uses
sgcHTTP, sgcHTTP2;
var
HTTP2: TsgcHTTP2Client;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.TLSOptions.IOHandler := iohSChannel; // of iohOpenSSL
HTTP2.TLSOptions.Version := tls1_2;
// Voeg custom headers toe (gecomprimeerd door HPACK)
HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');
// GET over HTTP/2 (ALPN onderhandelt 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 en WebSocket op dezelfde TLS-poort
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");
Deeplink naar de componentpagina's, online help en het kant-en-klare demoproject dat met de trial wordt meegeleverd.
| HTTP/2-client — TsgcHTTP2Client Componentpagina: functies, codevoorbeelden en TLS-opties voor de client. | Openen | |
| HTTP/2-server — TsgcWebSocketHTTPServer Componentpagina: hoe u HTTP/2 inschakelt naast HTTP/1.1 en WebSocket op één TLS-poort. | Openen | |
| Online help — HTTP/2 Volledige referentie van eigenschappen, methoden en events voor de HTTP/2-componenten. | Openen | |
| Demoproject — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Kant-en-klaar voorbeeldproject. Wordt meegeleverd met het sgcWebSockets-pakket — download hieronder de trial. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding over elk component in de bibliotheek. | Openen |