Composant WebSocket Delphi — Client et serveur de qualité production

Une implémentation WebSocket native, RFC 6455 pour Delphi et C++Builder. Construisez des clients et serveurs qui tiennent des milliers de connexions concurrentes, tournent sous Windows, macOS, Linux, iOS et Android, et survivent aux réseaux instables avec la reconnexion automatique WatchDog intégrée.

Qu'est-ce qu'un composant WebSocket Delphi ?

Un composant VCL/FMX prêt à l'emploi qui transforme le protocole WebSocket en une API de propriétés et d'événements que les développeurs Delphi natifs reconnaissent.

Un composant WebSocket Delphi est un composant non-visuel que vous déposez sur une fiche (ou instanciez à l'exécution) pour ouvrir un canal TCP full-duplex entre une application Delphi et tout pair WebSocket RFC 6455 — un navigateur, un service Node.js, un reverse proxy nginx, un broker Mosquitto, un endpoint OpenAI Realtime ou un autre processus Delphi. Contrairement au polling HTTP, un WebSocket garde la connexion ouverte : le serveur peut pousser des données dès qu'elles sont disponibles, avec une latence en millisecondes et sans surcharge HTTP par message.

sgcWebSockets est la bibliothèque WebSocket de référence dans l'écosystème Delphi depuis 2013. Les mêmes composants TsgcWebSocketClient et TsgcWebSocketHTTPServer tournent sans modification de Delphi 7 à Delphi 13, sur Win32, Win64, Linux64, macOS, iOS et Android, et sur C++Builder C2007 à C13. Il n'y a pas de runtime managé, pas de couche d'interop .NET, pas de pont JavaScript — c'est une implémentation Pascal pure qui se compile dans votre binaire.

Classe de composant

TsgcWebSocketClient / TsgcWebSocketHTTPServer

Standards

RFC 6455, RFC 7692 (permessage-deflate)

Plateformes

Windows, macOS, Linux, iOS, Android

Versions Delphi

Delphi 7 → Delphi 13 + C++Builder

Pourquoi choisir sgcWebSockets plutôt que faire le vôtre

Écrire un handler PING/PONG est facile. Survivre à un reverse proxy à terminaison TLS, un module WebSocket IIS, un firewall d'entreprise, un handover cellulaire mobile et un test de charge 5 000 clients, non.

Une API, tous les transports

WebSocket simple (ws://), WebSocket TLS (wss://), WebSocket sur HTTP/2, WebSocket sur QUIC/HTTP/3, fallback TCP brut — même composant, mêmes événements. Changez de transport en changeant une propriété.

Reconnexion automatique WatchDog

Activez WatchDog et le client se reconnectera avec backoff exponentiel, se ré-authentifiera, se réabonnera aux topics MQTT et rejouera les publications en file — le pattern canonique mobile / IoT, déjà écrit.

Le threading est résolu

Le serveur utilise un réacteur IOCP / kqueue / epoll sous le capot. Vous écrivez des handlers d'événements ; la bibliothèque les ordonnance à travers un pool de threads avec sérialisation par connexion.

permessage-deflate

Négocié automatiquement selon la RFC 7692. Coupe les payloads JSON de 70–90 % et est supporté par chaque navigateur moderne et load balancer.

Sous-protocoles inclus

MQTT 3.1.1/5.0, AMQP 0.9.1/1.0, STOMP, WAMP et Server-Sent Events roulent au-dessus du même transport WebSocket — une socket TCP, plusieurs protocoles applicatifs.

Serveur HTTP aussi

TsgcWebSocketHTTPServer sert des fichiers statiques, des endpoints REST, des ressources protégées par JWT et OAuth2, des réponses gzip-compressées et un upgrade HTTP/2 dans le même processus que votre endpoint WebSocket.

TLS qui marche vraiment

OpenSSL (cross-plateforme), SChannel (TLS noyau Windows) ou HTTP.sys. Certificats clients, SNI, ALPN, TLS 1.3 avec 0-RTT.

Canaux et diffusion

Les Channels côté serveur groupent les connexions par nom. Broadcast, BroadcastByChannel et BroadcastByUser font du fan-out vers des milliers de pairs en un seul appel.

Éprouvé au combat

En production chez des banques, exchanges, flottes IoT et firmes de trading depuis 2013. Mis à jour chaque mois ; history.txt trace chaque correction.

Checklist des fonctionnalités

Tout ce que la RFC dit, plus le durcissement opérationnel dont les vrais déploiements ont besoin.

CapacitéClientServeur
Framing RFC 6455 (texte, binaire, ping, pong, close)OuiOui
permessage-deflate (RFC 7692)OuiOui
Frames fragmentées et de continuationOuiOui
Messages clients masquésOuin/a
TLS 1.2 / 1.3 (OpenSSL + SChannel)OuiOui
Certificats clients / mTLSOuiOui
Authentification JWT et OAuth2OuiOui
HTTP/2 + WebSocket (RFC 8441)OuiOui
HTTP/3 + WebSocket sur QUIC (RFC 9220)OuiOui
Reconnexion automatique WatchDogOuin/a
Heart-beat (PING/PONG)OuiOui
Canaux et diffusionn/aOui
Sous-protocoles (MQTT / AMQP / STOMP / WAMP / SSE)OuiOui
Hébergement HTTP.sys (noyau Windows)n/aOui
Mode daemon LinuxOuiOui

Hello WebSocket — client Delphi en 12 lignes

Déposez un TsgcWebSocketClient sur la fiche, définissez Host / Port, gérez OnMessage, définissez 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;

Le côté serveur est symétrique — déposez un TsgcWebSocketHTTPServer, définissez Port, gérez OnConnect et OnMessage, appelez Broadcast pour faire du fan-out vers chaque pair connecté.

Versions Delphi et C++Builder supportées

Un arbre source, 22 packages runtime — couvrant chaque release Delphi encore en usage commercial actif.

ÉditionVersions
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 base sgcIndy)
PlateformesWin32, Win64, Linux64, macOS Intel/ARM, iOS device + simulator, Android ARM/ARM64

Continuez à explorer

Le transport WebSocket est la fondation de tous les autres protocoles dans la bibliothèque.

Qu'est-ce que les WebSockets ?

Contexte sur le protocole RFC 6455, le handshake, le framing et les cas d'usage.

Sous-protocole MQTT

Faire tourner MQTT 3.1.1 / 5.0 sur la même connexion WebSocket.

Client et serveur HTTP/2

HTTP/2 multiplexé avec server push et WebSocket-sur-HTTP/2.

Sélecteur de protocole temps réel

WebSocket vs SSE vs HTTP/2 push vs MQTT vs WebRTC — matrice de décision.

Blog : Canaux, groupes et utilisateurs

Guide de patterns pour diffuser à des sous-ensembles de connexions.

Blog : WatchDog et BeforeConnect

Comment fonctionne le cycle de vie auto-reconnect sous le capot.

Blog : Compression plus rapide

Optimiser permessage-deflate pour le débit vs CPU.

Questions fréquentes

Quelles versions de Delphi sont supportées ?

Chaque release commerciale Delphi de Delphi 7 (2002) à Delphi 13 (2025), plus les versions C++Builder correspondantes. Nous livrons 22 packages runtime séparés — un par IDE — depuis un seul arbre source. Il n'y a pas de SKU « legacy » séparé ; chaque client obtient chaque version.

Le composant WebSocket supporte-t-il TLS / wss:// ?

Oui. Définissez URL := 'wss://...' et choisissez un fournisseur TLS : OpenSSL (cross-plateforme, livré avec l'essai), SChannel (TLS noyau Windows, pas de DLL à déployer), ou HTTP.sys (côté serveur, certificat stocké dans le magasin de certificats Windows). Certificats clients, SNI, ALPN, TLS 1.3 et 0-RTT sont tous supportés.

Combien de connexions concurrentes le serveur peut-il gérer ?

Sous Windows le serveur utilise IOCP et passe couramment à 50 000+ connexions concurrentes par processus sur du matériel standard. Sous Linux le réacteur epoll passe à l'échelle de manière similaire. La limite dure est niveau OS (descripteurs de fichiers, plage de ports éphémères, mémoire noyau), pas la bibliothèque.

Quel est le modèle de licence ?

Licence perpétuelle par développeur libre de redevances avec une année de mises à jour incluse. Licences mono-développeur, équipe et site disponibles — voir tarifs. Le code source est inclus avec chaque édition commerciale.

Prêt à ajouter des WebSockets à votre application Delphi ?

Téléchargez l'essai 30 jours entièrement fonctionnel — client, serveur, tous les sous-protocoles, toutes les versions Delphi.