Wybór biblioteki WebSocket dla Delphi — Przewodnik nabywcy 2026

· Recenzje

Dlaczego ten przewodnik istnieje

WebSocket nie jest już niszowym transportem. Pulpity tradingowe, backendy czatów, gry wieloosobowe, płaszczyzny sterowania IoT, strumieniowane odpowiedzi AI, konsole administracyjne w przeglądarce — prawie każda nowoczesna interaktywna aplikacja otwiera przynajmniej jeden WebSocket. Deweloperzy Delphi pytający „której biblioteki powinienem użyć?” w 2026 roku stają przed mniejszym polem wyboru, niż mogliby pomyśleć: nie każdy klasyczny pakiet sieciowy Delphi nadążył za RFC 6455, a niektóre z tych, które to zrobiły, są skierowane do bardzo konkretnych nisz.

Ten przewodnik przegląda realistyczne opcje na rok 2026 — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — i podaje na końcu matrycę decyzyjną. Tam, gdzie twierdzenia zależą od aktualnego wydania producenta, ten artykuł opisuje sytuację na dzień pisania; zawsze potwierdzaj szczegóły z najnowszym changelogiem producenta przed zobowiązaniem.

Konkurenci

sgcWebSockets (eSeGeCe)

Komercyjna biblioteka skoncentrowana na WebSocket i szerszej rodzinie nowoczesnych protokołów (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, API AI). Pełne RFC 6455, per-message deflate, podprotokoły, kanały, pomocniki rozgłaszania, automatyczne ponowne łączenie WatchDog, skalowanie serwera IOCP, klient JavaScript odzwierciedlający API, port .NET. Edycja Free do użytku niekomercyjnego; cztery płatne edycje. Delphi 7 do 13, plus C++Builder i .NET.

Indy (standard)

Standardowe Indy dostarczane z Delphi nie zawiera natywnego klienta ani serwera WebSocket. Istnieje kilka dodatków społecznościowych (szukaj na GitHubie „Indy WebSocket”), ale żaden nie jest częścią oficjalnej dystrybucji IndyProject na dzień pisania. Jeśli budujesz WebSocket bezpośrednio na Indy, w zasadzie sam piszesz framer. Darmowe, dostarczane w pakiecie.

TMS FNC WX (wcześniej TMS WEB Core / FNC WebSocket)

TMS Software dostarcza komponent WebSocket dla wielu frameworków jako część rodziny FNC (TTMSFNCWebSocketClient oraz strona serwera przez TMS XData / TMS Sparkle). Działa na VCL, FMX, LCL i TMS WEB Core. Strona klienta jest solidna; strona serwera jest dostarczana przede wszystkim przez stos TMS XData / Sparkle jako funkcja tych produktów. Komercyjne, z subskrypcyjną ceną na dewelopera. Delphi 10.x i nowsze.

mORMot 2

Open-source'owy framework full-stack autorstwa Synopse (Arnaud Bouchez). Zawiera klienta i serwer WebSocket ściśle zintegrowanego z jego infrastrukturą SOA/ORM/REST. WebSocket mORMot jest dojrzały, szybki, wspiera ramkowanie binarne i per-message deflate i jest szeroko używany w produkcji dla usług o wysokiej skali. Kompromisem jest to, że mORMot ma swoje zdanie — użycie samej jego warstwy WebSocket jest możliwe, ale naturalnym dopasowaniem jest, kiedy adoptujesz szerszy framework. Open source (trójlicencja MPL/GPL/LGPL), Delphi 7 i wyżej, plus FreePascal.

Synapse

Klasyczna open-source'owa biblioteka sieciowa Pascal. Na dzień pisania, standardowe Synapse nie zawiera implementacji WebSocket. Istnieją pewne warstwy WebSocket od osób trzecich zbudowane na Synapse, ale są nieutrzymywane lub jednoosobowe. Darmowe.

Matryca funkcji

Funkcja sgcWebSockets Indy (standard) TMS FNC WX mORMot 2 Synapse
Klient WebSocketTakNieTakTakNie
Serwer WebSocketTakNiePrzez TMS XData/SparkleTakNie
RFC 6455 (ramki, maskowanie, ramki sterujące)Takn/dTakTakn/d
Per-message deflate (RFC 7692)Takn/dCzęścioweTakn/d
Podprotokoły / kanały / rozgłaszanieTak, wbudowanen/dRęczneRęcznen/d
Automatyczne ponowne łączenie / WatchDogTakn/dRęczneRęcznen/d
WebSocket nad TLS (wss://)Tak (OpenSSL, SChannel, BoringSSL)n/dTakTakn/d
Podprotokoły WebSocket-MQTT / STOMP / WAMPTakn/dNieOgraniczonen/d
HTTP/2, HTTP/3TakNieNieOgraniczoneNie
Skalowanie serwera IOCP / epollTak (Windows IOCP, Linux epoll)Wątek-na-połączenieZależy od serwera hostaTakn/d
Klient JavaScript odzwierciedlający APITak (dostarcza bibliotekę JS)n/dTak (integracja z TMS WEB Core)Ręcznen/d
Port .NETTak (to samo API)n/dNieNien/d
Wersje DelphiD7 - D13D7 - D13D10.x - D13D7 - D13, FPCD7 - D13, FPC
LicencjaKomercyjna (istnieje edycja Free)Darmowa, w stylu MITKomercyjnaOpen source trójlicencjaDarmowa
Wsparcie producentaWliczone w płatne edycjeSpołeczność (IndyProject)Wliczone w subskrypcjęWsparcie komercyjne przez SynopseSpołeczność / jeden autor
Aktywne utrzymanieComiesięczne wydaniaPowolne ale stabilneRegularneBardzo aktywnePowolne

Wybór według scenariusza

Scenariusz 1: Aplikacja desktopowa VCL łącząca się z zewnętrznym API WebSocket

Potrzebujesz klienta, który łączy się z wss://, wysyła JSON, odbiera JSON, ponownie łączy się po rozłączeniu, obsługuje TLS. Najkrótszą drogą jest sgcWebSockets (upuść komponent, ustaw URL, ustaw WatchDog.Attempts, gotowe) lub TMS FNC WX, jeśli już masz licencję na pakiet FNC. Indy i Synapse będą wymagały samodzielnego napisania framera, co jest dużą pracą, by poprawnie obsłużyć przypadki krawędziowe RFC 6455.

Scenariusz 2: Budowa serwera WebSocket dla setek klientów

sgcWebSockets to naturalny wybór, jeśli chcesz samodzielnego komponentu serwera, który obsługuje HTTP i WebSocket na tym samym porcie z kanałami i rozgłaszaniem. mORMot 2 to naturalny wybór, jeśli już budujesz usługę SOA/REST wewnątrz frameworka mORMot — jego warstwa WebSocket integruje się z resztą stosu i jest sprawdzona w skali bojowej.

Scenariusz 3: Dziesiątki tysięcy jednoczesnych połączeń

Zarówno sgcWebSockets (IOCP na Windows, epoll na Linux), jak i mORMot 2 zostały wdrożone w produkcji w tej skali. Model wątek-na-połączenie standardowego Indy raczej nie nadąży bez znaczącej pracy architektonicznej. Skalowanie TMS FNC WX zależy od wybranego serwera hosta (XData/Sparkle).

Scenariusz 4: WebSocket wewnątrz frameworka Pascal full-stack (REST, ORM, SOA)

mORMot 2. To do tego mORMot jest stworzony. Adoptowanie samej warstwy WebSocket w izolacji jest możliwe, ale uzyskujesz największą wartość, gdy obejmujesz szerszy framework.

Scenariusz 5: Klient cross-framework (VCL, FMX, LCL, TMS WEB Core)

TMS FNC WX jest zaprojektowany dokładnie do tego przypadku — jedno API w czterech frameworkach. sgcWebSockets pokrywa VCL, FMX i C++Builder plus port .NET, ale nie celuje w Lazarus/FPC.

Scenariusz 6: Potrzeba WebSocket plus MQTT, AMQP, WebRTC, HTTP/2, API AI

sgcWebSockets to jedyna biblioteka w tym porównaniu, która dostarcza wszystkie powyższe pod pojedynczym produktem i pojedynczym modelem komponentów. Jeśli Twój projekt jest na trajektorii od „po prostu klient WebSocket” do „pełnego stosu czasu rzeczywistego”, konsolidacja wcześnie jest zwykle tańsza niż klejenie kilku bibliotek razem później.

Scenariusz 7: Napięty budżet, tylko open-source, projekt hobbystyczny

mORMot 2 (open source) daje Ci poważną implementację WebSocket za darmo. Edycja Free sgcWebSockets jest opcją dla użytku niekomercyjnego. Indy z dodatkiem WebSocket od społeczności jest technicznie możliwe, ale spodziewaj się, że sam przeczytasz odpowiednie RFC.

Matryca decyzyjna

Co liczy się najbardziejZalecany wybór
Najszybszy czas do działającego klienta + wsparcie producentasgcWebSockets
Open-source'owy framework full-stackmORMot 2
Cross-framework (VCL/FMX/LCL/WEB Core)TMS FNC WX
Najwięcej jednoczesnych połączeń, komercyjnesgcWebSockets
Najwięcej jednoczesnych połączeń, open sourcemORMot 2
Jeden produkt pokrywający WebSocket + MQTT + HTTP/2 + WebRTC + AIsgcWebSockets
Darmowy / niezobowiązujący projekt hobbystycznymORMot 2 lub edycja Free sgcWebSockets
Już wewnątrz projektu TMS XData / SparkleTMS FNC WX
Już wewnątrz projektu mORMotmORMot 2

Lista kontrolna przed zobowiązaniem

Podsumowanie

Krajobraz WebSocket Delphi w 2026 roku jest zdrowszy, niż wygląda na pierwszy rzut oka. Dla szybkiego klienta sgcWebSockets uruchamia Cię w minutach. Dla open-source'owego projektu full-stack mORMot 2 jest trudny do pobicia. Dla cross-framework klientów GUI TMS FNC WX to naturalne dopasowanie. Standardowe Indy i Synapse pozostają cenne dla klasycznych protokołów internetowych, ale żadna z nich nie panuje nad WebSocket. Właściwy wybór zależy od tego, gdzie Twój projekt siedzi na spektrum od „pojedynczego endpointu” do „pełnej platformy czasu rzeczywistego” — wybierz bibliotekę pasującą zarówno do dzisiejszych wymagań, jak i do tego, gdzie spodziewasz się projektu za dwa lata.