Waarom deze gids bestaat
WebSocket is geen niche-transport meer. Trading-dashboards, chat-backends, multiplayer-games, IoT-controlvlakken, AI-streaming-responses, browsergebaseerde admin-consoles — bijna elke moderne interactieve applicatie opent ten minste een WebSocket. Delphi-ontwikkelaars die in 2026 vragen “welke bibliotheek zou ik moeten gebruiken?” staan voor een kleiner veld dan ze misschien denken: niet elk klassiek Delphi-netwerkpakket is bijgekomen met RFC 6455, en sommige die dat wel zijn, richten zich op zeer specifieke niches.
Deze gids overziet de realistische opties per 2026 — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — en geeft aan het eind een beslissingsmatrix. Waar claims afhangen van de huidige release van een leverancier, beschrijft dit artikel de situatie op moment van schrijven; bevestig details altijd tegen de nieuwste changelog van de leverancier voordat je je vastlegt.
De kanshebbers
sgcWebSockets (eSeGeCe)
Commerciele bibliotheek gericht op WebSocket en de bredere moderne protocolfamilie (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, AI-API’s). Volledige RFC 6455, per-message deflate, subprotocollen, kanalen, broadcast-helpers, WatchDog auto-reconnect, IOCP-server-schaling, JavaScript-client-spiegel, .NET-port. Free Edition voor niet-commercieel gebruik; vier betaalde edities. Delphi 7 t/m 13, plus C++Builder en .NET.
Indy (standaard)
De standaard Indy die met Delphi wordt meegeleverd, bevat geen native WebSocket-client of -server. Er bestaan verschillende community-add-ons (zoek op GitHub naar “Indy WebSocket”) maar geen ervan maakt op het moment van schrijven deel uit van de officiele IndyProject-distributie. Als je een WebSocket rechtstreeks bovenop Indy bouwt, schrijf je in wezen zelf de framer. Gratis, zit in de doos.
TMS FNC WX (voorheen TMS WEB Core / FNC WebSocket)
TMS Software levert een cross-framework WebSocket-component als deel van de FNC-familie (TTMSFNCWebSocketClient en een server-zijde via TMS XData / TMS Sparkle). Het werkt op VCL, FMX, LCL en TMS WEB Core. Client-side is solide; server-side wordt primair geleverd via de TMS XData / Sparkle-stack als feature van die producten. Commercieel, met per-developer abonnementsprijzen. Delphi 10.x en nieuwer.
mORMot 2
Open-source full-stack framework van Synopse (Arnaud Bouchez). Bevat een WebSocket-client en -server strak geintegreerd met zijn SOA/ORM/REST-infrastructuur. mORMot’s WebSocket is volwassen, snel, ondersteunt binaire framing en per-message deflate, en wordt op grote schaal gebruikt in productie voor high-scale services. De afweging is dat mORMot opinieerd is — alleen de WebSocket-laag gebruiken is mogelijk maar de natuurlijke fit is wanneer je het bredere framework adopteert. Open source (MPL/GPL/LGPL tri-license), Delphi 7 en hoger, plus FreePascal.
Synapse
Klassieke open-source Pascal-netwerkbibliotheek. Op moment van schrijven bevat de standaard Synapse geen WebSocket-implementatie. Sommige third-party WebSocket-lagen gebouwd bovenop Synapse bestaan maar ze zijn niet-onderhouden of single-author-projecten. Gratis.
Feature-matrix
| Feature | sgcWebSockets | Indy (standaard) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| WebSocket-client | Ja | Nee | Ja | Ja | Nee |
| WebSocket-server | Ja | Nee | Via TMS XData/Sparkle | Ja | Nee |
| RFC 6455 (frames, masking, control frames) | Ja | n.v.t. | Ja | Ja | n.v.t. |
| Per-message deflate (RFC 7692) | Ja | n.v.t. | Gedeeltelijk | Ja | n.v.t. |
| Subprotocollen / kanalen / broadcast | Ja, ingebouwd | n.v.t. | Handmatig | Handmatig | n.v.t. |
| Auto-reconnect / WatchDog | Ja | n.v.t. | Handmatig | Handmatig | n.v.t. |
| WebSocket over TLS (wss://) | Ja (OpenSSL, SChannel, BoringSSL) | n.v.t. | Ja | Ja | n.v.t. |
| WebSocket-MQTT / STOMP / WAMP-subprotocollen | Ja | n.v.t. | Nee | Beperkt | n.v.t. |
| HTTP/2, HTTP/3 | Ja | Nee | Nee | Beperkt | Nee |
| IOCP / epoll-server-schaling | Ja (Windows IOCP, Linux epoll) | Thread-per-verbinding | Hangt af van host-server | Ja | n.v.t. |
| JavaScript-client-spiegel | Ja (levert JS-lib) | n.v.t. | Ja (TMS WEB Core-integratie) | Handmatig | n.v.t. |
| .NET-port | Ja (dezelfde API) | n.v.t. | Nee | Nee | n.v.t. |
| Delphi-versies | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13, FPC | D7 - D13, FPC |
| Licentie | Commercieel (Free Edition bestaat) | Gratis, MIT-stijl | Commercieel | Open source tri-license | Gratis |
| Leveranciersondersteuning | Inbegrepen bij betaalde edities | Community (IndyProject) | Inbegrepen bij abonnement | Commerciele support via Synopse | Community / enkele auteur |
| Actief onderhoud | Maandelijkse releases | Traag maar stabiel | Regelmatig | Zeer actief | Traag |
Kiezen per scenario
Scenario 1: VCL-desktopapp die verbindt met een third-party WebSocket-API
Je hebt een client nodig die verbindt met wss://, JSON stuurt, JSON ontvangt, opnieuw verbindt bij disconnect, TLS afhandelt. De kortste route is sgcWebSockets (drop de component, zet URL, zet WatchDog.Attempts, klaar) of TMS FNC WX als je al de FNC-pack licentieert. Indy en Synapse vereisen dat je de framer zelf schrijft, wat veel werk is om alle RFC 6455 edge cases goed te krijgen.
Scenario 2: Een WebSocket-server bouwen voor honderden clients
sgcWebSockets is de natuurlijke keuze als je een standalone server-component wilt die HTTP en WebSocket op dezelfde poort serveert met kanalen en broadcast. mORMot 2 is de natuurlijke keuze als je al een SOA/REST-service binnen het mORMot-framework bouwt — de WebSocket-laag integreert met de rest van de stack en is battle-tested op schaal.
Scenario 3: Tienduizenden gelijktijdige verbindingen
Zowel sgcWebSockets (IOCP op Windows, epoll op Linux) als mORMot 2 zijn op die schaal in productie ingezet. Het thread-per-verbinding-model van standaard Indy zal het waarschijnlijk niet bijhouden zonder significant architectuurwerk. TMS FNC WX-schaling hangt af van de gekozen host-server (XData/Sparkle).
Scenario 4: WebSocket binnen een Pascal full-stack framework (REST, ORM, SOA)
mORMot 2. Daar is mORMot voor. Alleen de WebSocket-laag in isolatie adopteren is mogelijk maar je haalt de meeste waarde wanneer je het bredere framework omarmt.
Scenario 5: Cross-framework client (VCL, FMX, LCL, TMS WEB Core)
TMS FNC WX is voor precies dat geval ontworpen — een API in alle vier. sgcWebSockets dekt VCL, FMX en C++Builder plus een .NET-port, maar richt zich niet op Lazarus/FPC.
Scenario 6: WebSocket plus MQTT, AMQP, WebRTC, HTTP/2, AI-API’s nodig
sgcWebSockets is de enige bibliotheek in deze vergelijking die alle bovenstaande levert onder een enkel product en een enkel componentmodel. Als je project op een traject zit van “gewoon een WebSocket-client” naar “een volledige real-time stack”, is vroeg consolideren meestal goedkoper dan later meerdere bibliotheken aan elkaar te plakken.
Scenario 7: Krap budget, alleen open-source, hobbyproject
mORMot 2 (open source) geeft je gratis een serieuze WebSocket-implementatie. De Free Edition van sgcWebSockets is een optie voor niet-commercieel gebruik. Indy met een community WebSocket-add-on is technisch mogelijk maar verwacht zelf de relevante RFC’s te moeten lezen.
Beslissingsmatrix
| Wat het belangrijkst is | Aanbevolen keuze |
|---|---|
| Snelste tijd tot werkende client + leveranciersondersteuning | sgcWebSockets |
| Open-source full-stack framework | mORMot 2 |
| Cross-framework (VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| Hoogste gelijktijdige verbindingen, commercieel | sgcWebSockets |
| Hoogste gelijktijdige verbindingen, open source | mORMot 2 |
| Een product dat WebSocket + MQTT + HTTP/2 + WebRTC + AI dekt | sgcWebSockets |
| Gratis / no-commit hobbyproject | mORMot 2 of sgcWebSockets Free Edition |
| Al binnen een TMS XData / Sparkle-project | TMS FNC WX |
| Al binnen een mORMot-project | mORMot 2 |
Checklist voordat je je vastlegt
- Delphi-versie — bevestig dat de leverancier jouw exacte versie (D7/D10.4/D11/D12/D13) op hun compatibiliteitsmatrix vermeldt.
- RFC 6455-naleving — controleer dat de bibliotheek de Autobahn WebSocket-testsuite passeert, of in elk geval fragmentatie, control frames tijdens fragmentatie en UTF-8-validatie correct afhandelt.
- TLS-provider — OpenSSL is het meest gebruikt; SChannel telt als je geen OpenSSL-DLL’s kunt meeleveren; BoringSSL/ngtcp2 tellen als je QUIC nodig hebt.
- Reconnect-semantiek — auto-reconnect, exponentiele backoff, ping/pong keep-alive moeten configuratie zijn, geen code van jou.
- Server-schalingsmodel — IOCP/epoll voor tienduizenden verbindingen; thread-per-verbinding is prima tot lage duizenden.
- Licentiecompatibiliteit — tri-license (mORMot), commercieel abonnement (TMS), commercieel per editie (sgcWebSockets), gratis (Indy/Synapse).
- Onderhoudssignaal — bekijk de changelog van de laatste 12 maanden. Actieve bibliotheken leveren minstens elk kwartaal iets.
Afsluitende gedachten
Het Delphi-WebSocket-landschap in 2026 is gezonder dan het op het eerste gezicht lijkt. Voor een snelle client krijgt sgcWebSockets je in minuten werkend. Voor een open-source full-stack project is mORMot 2 moeilijk te verslaan. Voor cross-framework GUI-clients is TMS FNC WX een natuurlijke fit. Standaard Indy en Synapse blijven waardevol voor hun klassieke internetprotocollen maar geen van beide bezit WebSocket. De juiste keuze hangt af van waar je project zit op het spectrum van “enkel endpoint” tot “volledig real-time platform” — kies de bibliotheek die past bij zowel de eis van vandaag als waar je verwacht dat het project over twee jaar staat.