Delphi WebSocket-component — Productieklare client & server

Een native, RFC 6455 WebSocket-implementatie voor Delphi en C++Builder. Bouw clients en servers die duizenden gelijktijdige verbindingen vasthouden, draaien op Windows, macOS, Linux, iOS en Android, en wankele netwerken overleven met de ingebouwde WatchDog auto-reconnect.

Wat is een Delphi WebSocket-component?

Een drop-in VCL/FMX-component die het WebSocket-protocol omzet naar een property-en-event-API die native Delphi-ontwikkelaars herkennen.

Een Delphi WebSocket-component is een niet-visueel component dat je op een formulier dropt (of runtime instantieert) om een full-duplex TCP-kanaal te openen tussen een Delphi-applicatie en elke RFC 6455 WebSocket-peer — een browser, een Node.js-service, een nginx-reverse-proxy, een Mosquitto-broker, een OpenAI Realtime-endpoint of een ander Delphi-proces. In tegenstelling tot polling HTTP houdt een WebSocket de verbinding open: de server kan data pushen zodra deze beschikbaar is, met milliseconde-latentie en geen per-message HTTP-overhead.

sgcWebSockets is sinds 2013 de referentie-WebSocket-bibliotheek in het Delphi-ecosysteem. Dezelfde TsgcWebSocketClient- en TsgcWebSocketHTTPServer-componenten draaien ongewijzigd op Delphi 7 t/m Delphi 13, op Win32, Win64, Linux64, macOS, iOS en Android, en op C++Builder C2007 t/m C13. Er is geen managed runtime, geen .NET-interop-laag, geen JavaScript-bridge — het is een pure Pascal-implementatie die compileert in je binary.

Componentklasse

TsgcWebSocketClient / TsgcWebSocketHTTPServer

Standaarden

RFC 6455, RFC 7692 (permessage-deflate)

Platforms

Windows, macOS, Linux, iOS, Android

Delphi-versies

Delphi 7 → Delphi 13 + C++Builder

Waarom voor sgcWebSockets kiezen boven zelf bouwen

Een PING/PONG-handler schrijven is makkelijk. Een TLS-terminerende reverse proxy, een IIS WebSocket-module, een corporate firewall, een mobiele cellular handover en een 5.000-client-loadtest overleven niet.

Een API, elk transport

Plain WebSocket (ws://), TLS WebSocket (wss://), WebSocket over HTTP/2, WebSocket over QUIC/HTTP/3, raw TCP-fallback — zelfde component, zelfde events. Wissel transport door een property te veranderen.

WatchDog auto-reconnect

Schakel WatchDog in en de client reconnect met exponentiele backoff, herauthenticeert, abonneert zich opnieuw op MQTT-topics en speelt alle wachtende publicaties opnieuw af — het canonieke mobile / IoT-patroon, al geschreven.

Threading is opgelost

De server gebruikt onder de motorkap een IOCP- / kqueue- / epoll-reactor. Je schrijft event-handlers; de bibliotheek plant ze over een thread pool met per-verbinding-serialisatie.

permessage-deflate

Automatisch onderhandeld per RFC 7692. Snijdt JSON-payloads met 70–90 % en wordt ondersteund door elke moderne browser en load balancer.

Subprotocollen inbegrepen

MQTT 3.1.1/5.0, AMQP 0.9.1/1.0, STOMP, WAMP en Server-Sent Events rijden bovenop hetzelfde WebSocket-transport — een TCP-socket, meerdere applicatieprotocollen.

HTTP-server, ook

TsgcWebSocketHTTPServer serveert statische bestanden, REST-endpoints, JWT- en OAuth2-beschermde resources, gzip-gecomprimeerde responses en HTTP/2-upgrade in hetzelfde proces als je WebSocket-endpoint.

TLS dat echt werkt

OpenSSL (cross-platform), SChannel (Windows kernel-TLS) of HTTP.sys. Client-certificaten, SNI, ALPN, TLS 1.3 met 0-RTT.

Kanalen & broadcast

Server-side Channels groeperen verbindingen op naam. Broadcast, BroadcastByChannel en BroadcastByUser waaieren in een enkele aanroep uit naar duizenden peers.

Battle-tested

In productie bij banken, exchanges, IoT-vloten en trading-firms sinds 2013. Maandelijks bijgewerkt; history.txt volgt elke fix.

Feature-checklist

Alles wat de RFC zegt, plus de operationele hardening die echte deployments nodig hebben.

CapabilityClientServer
RFC 6455-framing (text, binary, ping, pong, close)JaJa
permessage-deflate (RFC 7692)JaJa
Fragmented & continuation framesJaJa
Masked client-messagesJan.v.t.
TLS 1.2 / 1.3 (OpenSSL + SChannel)JaJa
Client-certificaten / mTLSJaJa
JWT- & OAuth2-authenticatieJaJa
HTTP/2 + WebSocket (RFC 8441)JaJa
HTTP/3 + WebSocket over QUIC (RFC 9220)JaJa
WatchDog auto-reconnectJan.v.t.
Heartbeat (PING/PONG)JaJa
Kanalen & broadcastn.v.t.Ja
Subprotocollen (MQTT / AMQP / STOMP / WAMP / SSE)JaJa
HTTP.sys-hosting (Windows kernel)n.v.t.Ja
Linux-daemon-modusJaJa

Hello WebSocket — Delphi-client in 12 regels

Plaats een TsgcWebSocketClient op het formulier, stel Host / Port in, handle OnMessage af, zet Active := True.

uses
  sgcWebSocket, sgcWebSocket_Classes;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WS := TsgcWebSocketClient.Create(nil);
  WS.URL := 'wss://echo.websocket.events';
  WS.WatchDog.Enabled := True;
  WS.WatchDog.Interval := 5;
  WS.OnConnect := WSConnect;
  WS.OnMessage := WSMessage;
  WS.OnDisconnect := WSDisconnect;
  WS.Active := True;
end;

procedure TForm1.WSMessage(Connection: TsgcWSConnection; const Text: string);
begin
  Memo1.Lines.Add('<< ' + Text);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  WS.WriteData('{"hello":"world"}');
end;

Server-kant is symmetrisch — plaats een TsgcWebSocketHTTPServer, stel Port in, handle OnConnect en OnMessage af, roep Broadcast aan om uit te waaieren naar elke verbonden peer.

Ondersteunde Delphi- & C++Builder-versies

Een source tree, 22 runtime-packages — die elke Delphi-release dekken die nog actief in commercieel gebruik is.

EditieVersies
Delphi / RAD Studio7, 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13
C++Builder2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10, 10.1, 10.2, 10.3, 10.4, 11, 12, 13
FreePascal / Lazarus3.x (via sgcIndy-basis)
PlatformsWin32, Win64, Linux64, macOS Intel/ARM, iOS device + simulator, Android ARM/ARM64

Blijf verkennen

Het WebSocket-transport is het fundament van elk ander protocol in de bibliotheek.

Wat zijn WebSockets?

Achtergrond over het RFC 6455-protocol, de handshake, framing en use cases.

MQTT-subprotocol

Draai MQTT 3.1.1 / 5.0 over dezelfde WebSocket-verbinding.

HTTP/2-client & server

Multiplexed HTTP/2 met server push en WebSocket-over-HTTP/2.

Real-time-protocol-picker

WebSocket vs SSE vs HTTP/2-push vs MQTT vs WebRTC — beslissingsmatrix.

Blog: Kanalen, groepen & gebruikers

Patroongids voor het uitwaaieren naar subsets van verbindingen.

Blog: WatchDog & BeforeConnect

Hoe de auto-reconnect-lifecycle onder de motorkap werkt.

Blog: Snellere compressie

permessage-deflate tunen voor throughput vs CPU.

Veelgestelde vragen

Welke Delphi-versies worden ondersteund?

Elke commerciele Delphi-release van Delphi 7 (2002) t/m Delphi 13 (2025), plus bijpassende C++Builder-versies. We leveren 22 aparte runtime-packages — een per IDE — uit een enkele source tree. Er is geen aparte “legacy”-SKU; elke klant krijgt elke versie.

Ondersteunt de WebSocket-component TLS / wss://?

Ja. Stel URL := 'wss://...' in en kies een TLS-provider: OpenSSL (cross-platform, geleverd bij de trial), SChannel (Windows kernel-TLS, geen DLL’s te deployen), of HTTP.sys (server-zijde, certificaat opgeslagen in de Windows-certificaatopslag). Client-certificaten, SNI, ALPN, TLS 1.3 en 0-RTT worden allemaal ondersteund.

Hoeveel gelijktijdige verbindingen kan de server aan?

Op Windows gebruikt de server IOCP en schaalt routinematig naar 50.000+ gelijktijdige verbindingen per proces op commodity-hardware. Op Linux schaalt de epoll-reactor vergelijkbaar. De harde limiet is op OS-niveau (file descriptors, ephemerale poortrange, kernel-geheugen), niet de bibliotheek.

Wat is het licentiemodel?

Royalty-vrij per-ontwikkelaar perpetual licentie met een jaar updates inbegrepen. Single-developer-, team- en site-licenties beschikbaar — zie prijzen. Broncode is inbegrepen bij elke commerciele editie.

Klaar om WebSockets aan je Delphi-app toe te voegen?

Download de volledig functionele 30-daagse proefversie — client, server, alle subprotocollen, alle Delphi-versies.