Klient i serwer QUIC
TsgcQUICClient i TsgcQUICServer mówią surowym QUIC: wiele niezależnych strumieni na jednym szyfrowanym połączeniu, niepewne datagramy oraz migracja połączenia, gdy adres IP klienta zmienia się w trakcie sesji.
TCP wraz z TLS potrzebuje trzech rund, zanim dotrze pierwszy bajt odpowiedzi. QUIC łączy handshake transportu i kryptograficzny w jeden przelot, a wznowione połączenie może wysłać dane już w pierwszym pakiecie. sgcQUIC daje Delphi, C++ Builder i .NET natywny transport QUIC oraz zbudowany na nim klient i serwer HTTP/3, na silniku QUIC OpenSSL 3.5.
sgcQUIC to nie częściowa implementacja. Transport, ramkowanie, kompresja nagłówków i rozszerzenie WebTransport są w pełni obsługiwane, na bazie natywnego silnika QUIC OpenSSL 3.5.
Surowy transport QUIC oraz klient i serwer HTTP/3 dla Delphi, C++ Builder i .NET. Dodatek do sgcWebSockets Enterprise, na tym samym natywnym silniku QUIC OpenSSL 3.5. Pełny kod źródłowy, wdrożenie bez opłat licencyjnych.
Użyj TsgcQUICClient i TsgcQUICServer do surowego transportu z własnym ramkowaniem, albo sięgnij od razu po TsgcHTTP3Client i TsgcHTTP3Server, gdy format ramki to HTTP.
TsgcQUICClient i TsgcQUICServer mówią surowym QUIC: wiele niezależnych strumieni na jednym szyfrowanym połączeniu, niepewne datagramy oraz migracja połączenia, gdy adres IP klienta zmienia się w trakcie sesji.
TsgcHTTP3Client i TsgcHTTP3Server nakładają semantykę HTTP: nagłówki żądań i odpowiedzi kompresowane przez QPACK, wykrywanie Alt-Svc oraz te same metody i kody stanu, których już używa twój kod HTTP/2.
Klient, który łączył się wcześniej, może wysłać pierwsze żądanie już w pierwszym pakiecie, zanim handshake się zakończy.
Connection ID identyfikuje sesję, a nie adres IP, dzięki czemu telefon przechodzący z Wi-Fi na dane mobilne zachowuje otwarte strumienie.
Dwukierunkowe strumienie i niepewne datagramy w ramach jednego żądania Extended CONNECT, dla klientów przeglądarkowych obsługujących WebTransport.
Przewodniki po komponentach QUIC i HTTP/3:
Taki sam kształt jak każdy inny klient HTTP sgcWebSockets: ustaw właściwości, obsłuż zdarzenie, wywołaj metodę.
uses
sgcHTTP3_Client;
var
vClient: TsgcHTTP3Client;
begin
vClient := TsgcHTTP3Client.Create(nil);
vClient.Host := 'api.example.com';
vClient.Port := 443;
vClient.OnResponse :=
procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
begin
Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
end;
vClient.OnAltSvc :=
procedure(Sender: TObject; const AAltSvc: string)
begin
Memo1.Lines.Add('Alt-Svc: ' + AAltSvc); // h3 advertised over HTTP/2
end;
vClient.Connect;
vClient.Get('/pets/42');
end;
uses
sgcQUIC_Client;
var
vQUIC: TsgcQUICClient;
begin
vQUIC := TsgcQUICClient.Create(nil);
vQUIC.Host := 'quic.example.com';
vQUIC.Port := 4433;
vQUIC.EnableMultiStream := True;
vQUIC.OnQUICConnect :=
procedure(Sender: TObject)
var
vStreamId: Int64;
begin
vStreamId := vQUIC.OpenStream;
vQUIC.WriteData(vStreamId, 'ping');
end;
vQUIC.OnQUICStreamData :=
procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
begin
Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
end;
vQUIC.Active := True;
end;
Klient i serwer współdzielą po obu stronach ten sam model połączenia, strumieni i datagramów. Pełna matryca funkcji →
TsgcHTTP3Server obsługuje HTTP/3 przez QUIC na porcie UDP, podczas gdy powiązanie w stylu TsgcHTTP3ServerBridge z istniejącym serwerem HTTP/2 pozwala starszym klientom nadal działać przez TCP. Ogłoś Alt-Svc, a nowoczesne klienty same się zaktualizują.
uses
sgcHTTP3_Server;
procedure TForm1.FormCreate(Sender: TObject);
begin
FServer := TsgcHTTP3Server.Create(nil);
FServer.Port := 443;
FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
FServer.QUICOptions.SSLOptions.KeyFile := 'server.key';
// One handler for every incoming HTTP/3 request
FServer.OnH3Request :=
procedure(const Ctx: TsgcHTTP3Context)
begin
if Ctx.Path = '/pets/42' then
Ctx.RespondJSON(200, '{"name":"Rex"}')
else
Ctx.Respond(404, 'Not found');
end;
FServer.Active := True;
end;
Jeden komponent Delphi, który kończy QUIC, negocjuje h3 i kieruje każde żądanie do jednego handlera, z tym samym certyfikatem, który już wczytuje twój serwer HTTP/2.
Zwykła odpowiedź HTTP/2 niesie nagłówek Alt-Svc: h3=":443". Klienty, które go rozumieją, otwierają QUIC przy kolejnym żądaniu, bez przekierowania czy drugiej domeny.
Żądanie Extended CONNECT podnosi strumień do WebTransport, dając klientowi przeglądarkowemu dwukierunkowe strumienie i datagramy obok zwykłych żądań HTTP/3.
Handshake QUIC i TLS 1.3 działa na własnym silniku QUIC OpenSSL 3.5. Nie ma osobnej biblioteki QUIC do budowania czy dołączania.
sgcQUIC jest dodatkiem do sgcWebSockets Enterprise, więc licencja, kanał wsparcia i rytm aktualizacji są tymi, które już masz.
sgcQUIC to jedna z dziewięciu bibliotek komponentów eSeGeCe dla Delphi, C++ Builder i .NET. Dzielą te same konwencje, dostarczane są z pełnym kodem źródłowym i wdrażane bez opłat licencyjnych.
Surowy transport QUIC oraz klient i serwer HTTP/3, z WebTransport. Dodatek do sgcWebSockets Enterprise.
Dowiedz się więcej →WebSocket, HTTP/2, MQTT, AMQP, WebRTC, AI oraz ponad 30 integracji API. Licencja Enterprise, na której bazuje sgcQUIC.
Dowiedz się więcej →Komponenty HTML i UI po stronie serwera na Bootstrap 5 i htmx. Serwuj wyrenderowany interfejs przez ten sam transport HTTP/3.
Dowiedz się więcej →Komponenty AI, LLM i MCP dla Delphi oraz C++ Builder. Siedmiu dostawców LLM za jednym komponentem, a do tego MCP, embeddingi i mowa. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Dowiedz się więcej →Komponenty klienckie MQTT, AMQP 0.9.1 i 1.0, Apache Kafka oraz STOMP dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Dowiedz się więcej →Klient OAuth2, klient JWT i obsługa WebAuthn dla Delphi i C++ Builder. Loguj się u dowolnego dostawcy OAuth2/OIDC, wystawiaj i weryfikuj tokeny JWT oraz dodawaj do natywnych aplikacji logowanie kluczami dostępu (passkey). Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Dowiedz się więcej →Klient HTTP/2, klient gRPC oraz klienty Google Cloud Pub/Sub, Calendar i FCM dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Dowiedz się więcej →Serwer REST, serwer OpenAPI oraz komponenty klienta OpenAPI dla Delphi i C++ Builder. Publikuj API REST na podstawie kontraktu OpenAPI 3.x albo korzystaj z dowolnego API opisanego w OpenAPI. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.
Dowiedz się więcej →Parser OpenAPI 3.x, natywny generator SDK w Pascalu, komponent serwera OpenAPI oraz ponad 1 195 gotowych SDK chmurowych.
Dowiedz się więcej →XAdES, PAdES, CAdES i ASiC dla dokumentów, Authenticode, ClickOnce, NuGet i VSIX dla kodu.
Dowiedz się więcej →Windows Hello, czytniki linii papilarnych i Windows Biometric Framework dla Delphi i C++ Builder.
Dowiedz się więcej →Zaktualizowane komponenty Indy TCP/IP z nowoczesnym TLS, IPv6 i HTTP/2 od Delphi 7 do 13.
Dowiedz się więcej →Zaufali nam programiści Delphi, C++ Builder, Lazarus i .NET na całym świecie.
Wasza biblioteka sgcWebSockets jest bardzo przydatna i łatwa w konfiguracji. Tak trzymać!
sgcWebSockets jest niesamowity, a wasze wsparcie jest najlepsze!
Bardzo dziękuję za pomoc i wsparcie, uwielbiam wasze komponenty.