Perché esiste questa guida
WebSocket non è più un trasporto di nicchia. Dashboard di trading, backend di chat, giochi multiplayer, control plane IoT, response in streaming dell'AI, console di amministrazione basate su browser — quasi ogni applicazione interattiva moderna apre almeno un WebSocket. Gli sviluppatori Delphi che chiedono “quale libreria dovrei usare?” nel 2026 affrontano un campo più ristretto di quanto potrebbero pensare: non tutti i pacchetti di networking Delphi classici si sono messi al passo con RFC 6455, e alcuni di quelli che lo hanno fatto puntano a nicchie molto specifiche.
Questa guida passa in rassegna le opzioni realistiche nel 2026 — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — e fornisce una matrice decisionale alla fine. Dove le affermazioni dipendono dalla release corrente di un vendor, questo articolo descrive la situazione al momento della scrittura; conferma sempre i dettagli con il changelog più recente del vendor prima di impegnarti.
I contendenti
sgcWebSockets (eSeGeCe)
Libreria commerciale focalizzata su WebSocket e sulla più ampia famiglia di protocolli moderni (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, API AI). RFC 6455 completo, per-message deflate, sotto-protocolli, canali, helper di broadcast, auto-reconnect WatchDog, scaling server IOCP, mirror del client JavaScript, port .NET. Free Edition per uso non commerciale; quattro edizioni a pagamento. Da Delphi 7 a 13, più C++Builder e .NET.
Indy (stock)
L'Indy stock distribuito con Delphi non include un client o server WebSocket nativo. Esistono diversi add-on della community (cerca “Indy WebSocket” su GitHub) ma nessuno fa parte della distribuzione ufficiale di IndyProject al momento. Se costruisci un WebSocket sopra Indy direttamente, stai essenzialmente scrivendo il framer da te. Gratis, incluso nel box.
TMS FNC WX (in precedenza TMS WEB Core / FNC WebSocket)
TMS Software distribuisce un componente WebSocket cross-framework come parte della famiglia FNC (TTMSFNCWebSocketClient e un lato server tramite TMS XData / TMS Sparkle). Funziona su VCL, FMX, LCL e TMS WEB Core. Il lato client è solido; il lato server è consegnato principalmente attraverso lo stack TMS XData / Sparkle come funzionalità di quei prodotti. Commerciale, con pricing in abbonamento per sviluppatore. Delphi 10.x e più recenti.
mORMot 2
Framework full-stack open-source di Synopse (Arnaud Bouchez). Include un client e server WebSocket strettamente integrati con la sua infrastruttura SOA/ORM/REST. Il WebSocket di mORMot è maturo, veloce, supporta il framing binario e il per-message deflate, ed è ampiamente usato in produzione per servizi ad alta scala. Il compromesso è che mORMot è opinionato — usare solo il suo layer WebSocket è possibile ma l'adattamento naturale è quando adotti il framework più ampio. Open source (tri-licenza MPL/GPL/LGPL), Delphi 7 in su, più FreePascal.
Synapse
Libreria di networking Pascal open-source classica. Al momento, Synapse stock non include un'implementazione WebSocket. Alcuni layer WebSocket di terze parti costruiti sopra Synapse esistono ma sono non mantenuti o progetti di un singolo autore. Gratis.
Matrice delle funzionalità
| Funzionalità | sgcWebSockets | Indy (stock) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| Client WebSocket | Sì | No | Sì | Sì | No |
| Server WebSocket | Sì | No | Via TMS XData/Sparkle | Sì | No |
| RFC 6455 (frame, masking, frame di controllo) | Sì | n/a | Sì | Sì | n/a |
| Per-message deflate (RFC 7692) | Sì | n/a | Parziale | Sì | n/a |
| Sotto-protocolli / canali / broadcast | Sì, integrati | n/a | Manuale | Manuale | n/a |
| Auto-reconnect / WatchDog | Sì | n/a | Manuale | Manuale | n/a |
| WebSocket su TLS (wss://) | Sì (OpenSSL, SChannel, BoringSSL) | n/a | Sì | Sì | n/a |
| Sotto-protocolli WebSocket-MQTT / STOMP / WAMP | Sì | n/a | No | Limitato | n/a |
| HTTP/2, HTTP/3 | Sì | No | No | Limitato | No |
| Scaling server IOCP / epoll | Sì (IOCP Windows, epoll Linux) | Thread-per-connessione | Dipende dal server host | Sì | n/a |
| Mirror JavaScript del client | Sì (distribuisce libreria JS) | n/a | Sì (integrazione TMS WEB Core) | Manuale | n/a |
| Port .NET | Sì (stessa API) | n/a | No | No | n/a |
| Versioni Delphi | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13, FPC | D7 - D13, FPC |
| Licenza | Commerciale (esiste Free Edition) | Gratuita, in stile MIT | Commerciale | Tri-licenza open source | Gratuita |
| Supporto vendor | Incluso con le edizioni a pagamento | Community (IndyProject) | Incluso con l'abbonamento | Supporto commerciale via Synopse | Community / singolo autore |
| Manutenzione attiva | Rilasci mensili | Lenta ma stabile | Regolare | Molto attiva | Lenta |
Scelta per scenario
Scenario 1: app desktop VCL che si connette a un'API WebSocket di terze parti
Hai bisogno di un client che si connetta a wss://, invii JSON, riceva JSON, si riconnetta in caso di disconnessione, gestisca TLS. Il percorso più breve è sgcWebSockets (piazza il componente, imposta URL, imposta WatchDog.Attempts, fatto) o TMS FNC WX se hai già la licenza del pack FNC. Indy e Synapse richiederanno di scrivere il framer da te, il che è molto lavoro per gestire correttamente i casi limite di RFC 6455.
Scenario 2: costruire un server WebSocket per centinaia di client
sgcWebSockets è la scelta naturale se vuoi un componente server standalone che serva HTTP e WebSocket sulla stessa porta con canali e broadcast. mORMot 2 è la scelta naturale se stai già costruendo un servizio SOA/REST dentro il framework mORMot — il suo layer WebSocket si integra col resto dello stack ed è battle-tested su scala.
Scenario 3: decine di migliaia di connessioni concorrenti
Sia sgcWebSockets (IOCP su Windows, epoll su Linux) sia mORMot 2 sono stati deployati in produzione a quella scala. Il modello thread-per-connessione di Indy stock difficilmente terrà il passo senza un significativo lavoro architetturale. Lo scaling di TMS FNC WX dipende dal server host scelto (XData/Sparkle).
Scenario 4: WebSocket dentro un framework full-stack Pascal (REST, ORM, SOA)
mORMot 2. È a questo che serve mORMot. Adottare solo il layer WebSocket in isolamento è possibile ma ottieni il massimo valore quando abbracci il framework più ampio.
Scenario 5: client cross-framework (VCL, FMX, LCL, TMS WEB Core)
TMS FNC WX è progettato esattamente per quel caso — un'unica API attraverso tutti e quattro. sgcWebSockets copre VCL, FMX e C++Builder più una port .NET, ma non targetizza Lazarus/FPC.
Scenario 6: serve WebSocket più MQTT, AMQP, WebRTC, HTTP/2, API AI
sgcWebSockets è l'unica libreria in questo confronto che distribuisce tutto quanto sopra sotto un singolo prodotto e un singolo modello di componenti. Se il tuo progetto è su una traiettoria da “solo un client WebSocket” a “uno stack real-time completo”, consolidare presto di solito è più economico che incollare insieme più librerie dopo.
Scenario 7: budget stretto, solo open-source, progetto hobbystico
mORMot 2 (open source) ti dà un'implementazione WebSocket seria gratis. La Free Edition di sgcWebSockets è un'opzione per uso non commerciale. Indy con un add-on WebSocket della community è tecnicamente possibile ma aspettati di leggere da solo gli RFC pertinenti.
Matrice decisionale
| Cosa conta di più | Scelta consigliata |
|---|---|
| Tempo più rapido a un client funzionante + supporto vendor | sgcWebSockets |
| Framework full-stack open-source | mORMot 2 |
| Cross-framework (VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| Massime connessioni concorrenti, commerciale | sgcWebSockets |
| Massime connessioni concorrenti, open source | mORMot 2 |
| Un prodotto che copre WebSocket + MQTT + HTTP/2 + WebRTC + AI | sgcWebSockets |
| Progetto hobbystico gratis / senza impegno | mORMot 2 o sgcWebSockets Free Edition |
| Già dentro un progetto TMS XData / Sparkle | TMS FNC WX |
| Già dentro un progetto mORMot | mORMot 2 |
Checklist prima di impegnarti
- Versione Delphi — conferma che il vendor elenchi la tua versione esatta (D7/D10.4/D11/D12/D13) nella sua matrice di compatibilità.
- Conformità RFC 6455 — verifica che la libreria passi la suite di test Autobahn WebSocket, o almeno che gestisca correttamente la frammentazione, i frame di controllo durante la frammentazione e la validazione UTF-8.
- Provider TLS — OpenSSL è il più comune; SChannel conta se non puoi distribuire DLL OpenSSL; BoringSSL/ngtcp2 contano se hai bisogno di QUIC.
- Semantica di riconnessione — auto-reconnect, backoff esponenziale, keep-alive ping/pong dovrebbero essere configurazione, non il tuo codice.
- Modello di scaling server — IOCP/epoll per decine di migliaia di connessioni; thread-per-connessione va bene fino a poche migliaia.
- Compatibilità di licenza — tri-licenza (mORMot), abbonamento commerciale (TMS), commerciale per edizione (sgcWebSockets), gratis (Indy/Synapse).
- Segnale di manutenzione — guarda il changelog degli ultimi 12 mesi. Le librerie attive rilasciano qualcosa almeno trimestralmente.
Considerazioni finali
Il panorama WebSocket Delphi nel 2026 è più sano di quanto sembri a prima vista. Per un client veloce, sgcWebSockets ti fa funzionare in pochi minuti. Per un progetto full-stack open-source, mORMot 2 è difficile da battere. Per client GUI cross-framework, TMS FNC WX è un adattamento naturale. Indy stock e Synapse restano preziosi per i loro protocolli Internet classici ma nessuno dei due possiede WebSocket. La scelta giusta dipende da dove si trova il tuo progetto sullo spettro da “singolo endpoint” a “piattaforma real-time completa” — scegli la libreria che corrisponde sia al requisito di oggi sia a dove ti aspetti che il progetto sia tra due anni.