Pourquoi ce guide existe
WebSocket n'est plus un transport de niche. Tableaux de bord de trading, backends de chat, jeux multijoueurs, plans de contrôle IoT, réponses streamées d'IA, consoles d'administration web — presque toutes les applications interactives modernes ouvrent au moins un WebSocket. Les développeurs Delphi qui demandent « quelle bibliothèque dois-je utiliser ? » en 2026 font face à un champ plus restreint qu'ils ne pourraient le penser : tous les paquets réseau Delphi classiques n'ont pas rattrapé la RFC 6455, et certains de ceux qui l'ont fait visent des niches très spécifiques.
Ce guide passe en revue les options réalistes en 2026 — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — et donne une matrice de décision à la fin. Lorsque les affirmations dépendent de la release actuelle d'un éditeur, cet article décrit la situation à la date d'écriture ; confirmez toujours les détails avec le dernier changelog de l'éditeur avant de vous engager.
Les prétendants
sgcWebSockets (eSeGeCe)
Bibliothèque commerciale axée sur WebSocket et la famille plus large de protocoles modernes (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, API IA). RFC 6455 complet, per-message deflate, sous-protocoles, canaux, helpers de diffusion, WatchDog de reconnexion automatique, montée en charge serveur IOCP, miroir client JavaScript, portage .NET. Édition Free pour usage non commercial ; quatre éditions payantes. Delphi 7 à 13, plus C++Builder et .NET.
Indy (standard)
L'Indy standard livré avec Delphi n'inclut pas de client ou serveur WebSocket natif. Plusieurs add-ons communautaires existent (cherchez « Indy WebSocket » sur GitHub) mais aucun ne fait partie de la distribution officielle IndyProject à la date d'écriture. Si vous construisez un WebSocket directement sur Indy, vous écrivez essentiellement le framer vous-même. Gratuit, livré dans la boîte.
TMS FNC WX (anciennement TMS WEB Core / FNC WebSocket)
TMS Software livre un composant WebSocket cross-framework dans la famille FNC (TTMSFNCWebSocketClient et un côté serveur via TMS XData / TMS Sparkle). Il fonctionne sur VCL, FMX, LCL et TMS WEB Core. Le côté client est solide ; le côté serveur est principalement livré via la pile TMS XData / Sparkle comme une fonctionnalité de ces produits. Commercial, avec tarif par abonnement par développeur. Delphi 10.x et plus récent.
mORMot 2
Framework full-stack open source de Synopse (Arnaud Bouchez). Inclut un client et un serveur WebSocket étroitement intégrés à son infrastructure SOA/ORM/REST. Le WebSocket de mORMot est mature, rapide, supporte le framing binaire et per-message deflate, et est largement utilisé en production pour des services à grande échelle. Le compromis est que mORMot est opinionné — utiliser uniquement sa couche WebSocket est possible mais l'ajustement naturel est quand vous adoptez le framework plus large. Open source (tri-licence MPL/GPL/LGPL), Delphi 7 et plus, plus FreePascal.
Synapse
Bibliothèque réseau Pascal open source classique. À la date d'écriture, Synapse standard n'inclut pas d'implémentation WebSocket. Quelques couches WebSocket tierces construites sur Synapse existent mais elles sont non maintenues ou des projets mono-auteur. Gratuit.
Matrice de fonctionnalités
| Fonctionnalité | sgcWebSockets | Indy (standard) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| Client WebSocket | Oui | Non | Oui | Oui | Non |
| Serveur WebSocket | Oui | Non | Via TMS XData/Sparkle | Oui | Non |
| RFC 6455 (frames, masking, control frames) | Oui | n/a | Oui | Oui | n/a |
| Per-message deflate (RFC 7692) | Oui | n/a | Partiel | Oui | n/a |
| Sous-protocoles / canaux / diffusion | Oui, intégré | n/a | Manuel | Manuel | n/a |
| Reconnexion auto / WatchDog | Oui | n/a | Manuel | Manuel | n/a |
| WebSocket sur TLS (wss://) | Oui (OpenSSL, SChannel, BoringSSL) | n/a | Oui | Oui | n/a |
| Sous-protocoles WebSocket-MQTT / STOMP / WAMP | Oui | n/a | Non | Limité | n/a |
| HTTP/2, HTTP/3 | Oui | Non | Non | Limité | Non |
| Montée en charge serveur IOCP / epoll | Oui (IOCP Windows, epoll Linux) | Thread-par-connexion | Dépend du serveur hôte | Oui | n/a |
| Miroir client JavaScript | Oui (livre une lib JS) | n/a | Oui (intégration TMS WEB Core) | Manuel | n/a |
| Portage .NET | Oui (même API) | n/a | Non | Non | n/a |
| Versions Delphi | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13, FPC | D7 - D13, FPC |
| Licence | Commercial (Édition Free existe) | Gratuit, style MIT | Commercial | Tri-licence open source | Gratuit |
| Support éditeur | Inclus avec les éditions payantes | Communauté (IndyProject) | Inclus avec l'abonnement | Support commercial via Synopse | Communauté / auteur unique |
| Maintenance active | Releases mensuelles | Lent mais stable | Régulier | Très actif | Lent |
Choisir par scénario
Scénario 1 : application bureau VCL qui se connecte à une API WebSocket tierce
Vous avez besoin d'un client qui se connecte à wss://, envoie du JSON, reçoit du JSON, se reconnecte en cas de déconnexion, gère TLS. Le chemin le plus court est sgcWebSockets (déposer le composant, définir URL, définir WatchDog.Attempts, terminé) ou TMS FNC WX si vous avez déjà licence le pack FNC. Indy et Synapse nécessiteront d'écrire le framer vous-même, ce qui représente beaucoup de travail pour gérer correctement les cas limites de la RFC 6455.
Scénario 2 : Construire un serveur WebSocket pour des centaines de clients
sgcWebSockets est le choix naturel si vous voulez un composant serveur autonome qui sert HTTP et WebSocket sur le même port avec canaux et diffusion. mORMot 2 est le choix naturel si vous construisez déjà un service SOA/REST dans le framework mORMot — sa couche WebSocket s'intègre avec le reste de la pile et est éprouvée au combat à grande échelle.
Scénario 3 : Des dizaines de milliers de connexions concurrentes
sgcWebSockets (IOCP sous Windows, epoll sous Linux) et mORMot 2 ont tous deux été déployés en production à cette échelle. Le modèle thread-par-connexion d'Indy standard est peu susceptible de suivre sans un travail architectural significatif. La montée en charge de TMS FNC WX dépend du serveur hôte choisi (XData/Sparkle).
Scénario 4 : WebSocket dans un framework Pascal full-stack (REST, ORM, SOA)
mORMot 2. C'est exactement à cela que mORMot sert. Adopter uniquement la couche WebSocket isolément est possible mais vous obtenez le plus de valeur quand vous embrassez le framework plus large.
Scénario 5 : Client cross-framework (VCL, FMX, LCL, TMS WEB Core)
TMS FNC WX est conçu pour exactement ce cas — une API à travers les quatre. sgcWebSockets couvre VCL, FMX et C++Builder plus un portage .NET, mais ne cible pas Lazarus/FPC.
Scénario 6 : Besoin de WebSocket plus MQTT, AMQP, WebRTC, HTTP/2, API IA
sgcWebSockets est la seule bibliothèque dans cette comparaison qui livre tout ce qui précède sous un seul produit et un seul modèle de composants. Si votre projet est sur une trajectoire qui va de « juste un client WebSocket » à « une pile temps réel complète », consolider tôt est généralement moins cher que de coller plusieurs bibliothèques ensemble plus tard.
Scénario 7 : Budget serré, open source uniquement, projet amateur
mORMot 2 (open source) vous donne une implémentation WebSocket sérieuse gratuitement. L'Édition Free de sgcWebSockets est une option pour usage non commercial. Indy avec un add-on WebSocket communautaire est techniquement possible mais attendez-vous à lire les RFC pertinentes vous-même.
Matrice de décision
| Ce qui compte le plus | Choix recommandé |
|---|---|
| Temps le plus court vers un client fonctionnel + support éditeur | sgcWebSockets |
| Framework full-stack open source | mORMot 2 |
| Cross-framework (VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| Le plus de connexions concurrentes, commercial | sgcWebSockets |
| Le plus de connexions concurrentes, open source | mORMot 2 |
| Un seul produit couvrant WebSocket + MQTT + HTTP/2 + WebRTC + IA | sgcWebSockets |
| Projet amateur gratuit / sans engagement | mORMot 2 ou Édition Free sgcWebSockets |
| Déjà dans un projet TMS XData / Sparkle | TMS FNC WX |
| Déjà dans un projet mORMot | mORMot 2 |
Checklist avant de vous engager
- Version Delphi — confirmer que l'éditeur liste votre version exacte (D7/D10.4/D11/D12/D13) dans sa matrice de compatibilité.
- Conformité RFC 6455 — vérifier que la bibliothèque passe la suite de tests Autobahn WebSocket, ou au moins gère correctement la fragmentation, les frames de contrôle pendant la fragmentation et la validation UTF-8.
- Fournisseur TLS — OpenSSL est le plus courant ; SChannel compte si vous ne pouvez pas livrer des DLL OpenSSL ; BoringSSL/ngtcp2 comptent si vous avez besoin de QUIC.
- Sémantique de reconnexion — reconnexion automatique, backoff exponentiel, keep-alive ping/pong devraient être de la configuration, pas de votre code.
- Modèle de montée en charge serveur — IOCP/epoll pour des dizaines de milliers de connexions ; thread-par-connexion convient jusqu'à quelques milliers.
- Compatibilité de licence — tri-licence (mORMot), abonnement commercial (TMS), commercial par édition (sgcWebSockets), gratuit (Indy/Synapse).
- Signal de maintenance — regardez le changelog des 12 derniers mois. Les bibliothèques actives livrent quelque chose au moins trimestriellement.
Pour conclure
Le paysage WebSocket Delphi en 2026 est plus sain qu'il n'y paraît à première vue. Pour un client rapide, sgcWebSockets vous fait fonctionner en quelques minutes. Pour un projet full-stack open source, mORMot 2 est difficile à battre. Pour des clients GUI cross-framework, TMS FNC WX est un ajustement naturel. Indy et Synapse standard restent précieux pour leurs protocoles Internet classiques mais aucun ne possède WebSocket. Le bon choix dépend de l'endroit où votre projet se situe sur le spectre allant de « endpoint unique » à « plateforme temps réel complète » — choisissez la bibliothèque qui correspond à la fois à l'exigence d'aujourd'hui et à l'endroit où vous attendez le projet dans deux ans.