Protokół HTTP/2
Natywny klient i serwer HTTP/2 dla Delphi i C++Builder. Binarne ramkowanie, multipleksowanie strumieni, kompresja nagłówków HPACK i negocjacja ALPN — bez zależności od IIS, Apache czy Indy.
Natywny klient i serwer HTTP/2 dla Delphi i C++Builder. Binarne ramkowanie, multipleksowanie strumieni, kompresja nagłówków HPACK i negocjacja ALPN — bez zależności od IIS, Apache czy Indy.
Dwa gotowe do produkcji komponenty implementują pełny protokół przewodowy HTTP/2 (RFC 9113). Użyj klienta do konsumowania API HTTP/2, użyj serwera do ich publikowania — lub obu w tej samej aplikacji.
Natywny klient HTTP/2 — multipleksowane GET/POST/PUT/DELETE przez jedno połączenie TLS, nagłówki skompresowane przez HPACK, upgrade ALPN h2 lub prior-knowledge h2c, obsługa server push oraz uwierzytelnianie bearer / basic / NTLM.
Natywny serwer HTTP/2 — ten sam serwer HTTP WebSocket obsługuje HTTP/1.1, HTTP/2 (h2) i WebSocket na jednym porcie TLS. Negocjacja ALPN, multipleksowanie strumieni, odpowiedzi HPACK i opcjonalny bootstrap WebSocket-over-HTTP/2 (RFC 8441).
Pierwszorzędna implementacja ramkowania HTTP/2 zintegrowana zarówno z klientem, jak i z serwerem HTTP WebSocket.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Klient: Standard / Pro / Enterprise
Serwer: Pro / Enterprise
Wszystkie zalety HTTP/2 nad HTTP/1.1 — w natywnym kodzie Delphi/C++Builder, bez uruchamiania osobnego serwera WWW.
Żądania i odpowiedzi są dzielone na ramki binarne, parsowane przez deterministyczny automat stanów. Koniec z parsowaniem tekstowym i niejednoznacznościami HTTP/1.1.
Dziesiątki równoczesnych żądań współdzielą jedno połączenie TCP/TLS — bez blokowania head-of-line na warstwie HTTP i bez dodatkowych gniazd na żądanie.
Wbudowany koder/dekoder HPACK (RFC 7541). Powtarzane ciasteczka, tokeny uwierzytelniania i nagłówki content-type zajmują niemal zero bajtów po pierwszym żądaniu.
Podczas uzgadniania TLS druga strona ogłasza h2 i http/1.1; wynegocjowana wartość ALPN wybiera protokół bez marnowania round-tripów.
Dla zaufanych połączeń wewnętrznych i sidecarów service-mesh obie strony mogą pominąć ALPN i rozpocząć HTTP/2 w trybie plaintext poprzez HTTP2_PriorKnowledge.
Serwer może proaktywnie wysyłać odpowiedzi PUSH_PROMISE; klient udostępnia je przez OnHTTP2StreamData do buforowania. Uwaga: przestarzałe w publicznym Web, nadal użyteczne wewnętrznie.
Wskazówki dotyczące priorytetu i zależności dla każdego strumienia pozwalają krytycznym odpowiedziom (autoryzacja, nawigacja, wyniki JSON-RPC) wyprzedzać transfery masowe w tym samym połączeniu.
Kontrola przepływu WINDOW_UPDATE na poziomie strumienia i połączenia zapobiega zagłodzeniu mniejszych odpowiedzi przez jedną dużą — konfigurowalna przez ramki SETTINGS.
Ustaw TLSOptions.IOHandler na iohSChannel, aby skorzystać z TLS w jądrze Windows (bez DLL-i), lub na iohOpenSSL dla pełnej obsługi 1.2/1.3 na wszystkich platformach.
Gotowe scenariusze, w których multipleksowanie i oszczędności HPACK z HTTP/2 zwracają się natychmiast.
Provider API Apple APNs wymaga HTTP/2. TsgcHTTP2Client obsługuje komponent Apple Push od początku do końca z uwierzytelnianiem opartym na tokenach.
API FCM HTTP v1 od Google działa przez HTTP/2. Ten sam komponent zasila FCM z generowaniem JWT dla konta usługi.
Większość chmurowych API (Stripe, GitHub, Cloudflare, Google, Azure…) domyślnie używa HTTP/2 — multipleksowani klienci skracają opóźnienia przy wywołaniach równoległych.
Wewnętrzne mikroserwisy za sidecar mesh używają HTTP/2 prior-knowledge (h2c) do multipleksowania setek strumieni RPC przez jedno gniazdo.
TsgcWebSocketHTTPServer obsługuje HTTP/1.1, HTTP/2 i WebSocket na jednym punkcie końcowym TLS — ALPN automatycznie kieruje każde połączenie.
Dla klientów, którzy wolą tunelować ramki WebSocket wewnątrz strumieni HTTP/2, włącz Specifications.RFC8441 po stronie serwera.
Upuść komponent, ustaw TLS, gotowe. ALPN podczas uzgadniania wynegocjuje za Ciebie h2.
uses
sgcHTTP, sgcHTTP2;
var
HTTP2: TsgcHTTP2Client;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.TLSOptions.IOHandler := iohSChannel; // lub iohOpenSSL
HTTP2.TLSOptions.Version := tls1_2;
// Dodaj niestandardowe nagłówki (kompresowane przez HPACK)
HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');
// GET przez HTTP/2 (ALPN negocjuje 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 i WebSocket na tym samym porcie 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");
Przejdź bezpośrednio do stron komponentów, pomocy online i gotowego do uruchomienia projektu demo dołączonego do wersji próbnej.
| Klient HTTP/2 — TsgcHTTP2Client Strona komponentu: funkcje, przykłady kodu i opcje TLS dla klienta. | Otwórz | |
| Serwer HTTP/2 — TsgcWebSocketHTTPServer Strona komponentu: jak włączyć HTTP/2 obok HTTP/1.1 i WebSocket na jednym porcie TLS. | Otwórz | |
| Pomoc online — HTTP/2 Pełna dokumentacja właściwości, metod i zdarzeń komponentów HTTP/2. | Otwórz | |
| Projekt demo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej. | Otwórz | |
| Podręcznik użytkownika (PDF) Obszerny podręcznik obejmujący każdy komponent biblioteki. | Otwórz |