Por qué existe esta guía
WebSocket ya no es un transporte de nicho. Dashboards de trading, backends de chat, juegos multijugador, planos de control IoT, respuestas en streaming de IA, consolas de administración basadas en navegador — casi cualquier aplicación interactiva moderna abre al menos un WebSocket. Los desarrolladores Delphi preguntándose “¿qué librería debería usar?” en 2026 se enfrentan a un campo menor del que podrían pensar: no todo paquete clásico de red Delphi se ha puesto al día con RFC 6455, y algunos de los que sí lo han hecho apuntan a nichos muy específicos.
Esta guía repasa las opciones realistas de 2026 — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — y da una matriz de decisión al final. Donde las afirmaciones dependen de la release actual de un fabricante, este artículo describe la situación al momento de escribir; confirma siempre los detalles contra el changelog más reciente del fabricante antes de comprometerte.
Los contendientes
sgcWebSockets (eSeGeCe)
Librería comercial centrada en WebSocket y la familia más amplia de protocolos modernos (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, APIs de IA). RFC 6455 completo, per-message deflate, sub-protocolos, canales, helpers de broadcast, reconexión automática WatchDog, escalado IOCP de servidor, espejo del cliente en JavaScript, port a .NET. Edición Free para uso no comercial; cuatro ediciones de pago. Delphi 7 hasta 13, más C++Builder y .NET.
Indy (de fábrica)
El Indy que viene con Delphi no incluye un cliente o servidor WebSocket nativo. Existen varios add-ons comunitarios (busca en GitHub “Indy WebSocket”) pero ninguno forma parte de la distribución oficial IndyProject al momento de escribir. Si construyes un WebSocket directamente sobre Indy, estás esencialmente escribiendo el framer tú mismo. Gratis, viene en la caja.
TMS FNC WX (anteriormente TMS WEB Core / FNC WebSocket)
TMS Software distribuye un componente WebSocket cross-framework como parte de la familia FNC (TTMSFNCWebSocketClient y un lado servidor vía TMS XData / TMS Sparkle). Funciona en VCL, FMX, LCL y TMS WEB Core. El lado cliente es sólido; el lado servidor se entrega principalmente a través de la pila TMS XData / Sparkle como función de esos productos. Comercial, con precios de suscripción por desarrollador. Delphi 10.x y más nuevos.
mORMot 2
Framework full-stack open-source de Synopse (Arnaud Bouchez). Incluye cliente y servidor WebSocket fuertemente integrados con su infraestructura SOA/ORM/REST. El WebSocket de mORMot es maduro, rápido, soporta framing binario y per-message deflate, y se usa ampliamente en producción para servicios de gran escala. El compromiso es que mORMot es opinado — usar sólo su capa WebSocket es posible pero el encaje natural es cuando adoptas el framework completo. Open source (tri-licencia MPL/GPL/LGPL), Delphi 7 en adelante, más FreePascal.
Synapse
Librería clásica open-source de red Pascal. Al momento de escribir, el Synapse de fábrica no incluye implementación WebSocket. Existen algunas capas WebSocket de terceros construidas encima de Synapse pero no se mantienen o son proyectos de un único autor. Gratis.
Matriz de funciones
| Función | sgcWebSockets | Indy (de fábrica) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| Cliente WebSocket | Sí | No | Sí | Sí | No |
| Servidor WebSocket | Sí | No | Vía TMS XData/Sparkle | Sí | No |
| RFC 6455 (frames, masking, control frames) | Sí | n/d | Sí | Sí | n/d |
| Per-message deflate (RFC 7692) | Sí | n/d | Parcial | Sí | n/d |
| Sub-protocolos / canales / broadcast | Sí, integrado | n/d | Manual | Manual | n/d |
| Auto-reconexión / WatchDog | Sí | n/d | Manual | Manual | n/d |
| WebSocket sobre TLS (wss://) | Sí (OpenSSL, SChannel, BoringSSL) | n/d | Sí | Sí | n/d |
| Sub-protocolos WebSocket-MQTT / STOMP / WAMP | Sí | n/d | No | Limitado | n/d |
| HTTP/2, HTTP/3 | Sí | No | No | Limitado | No |
| Escalado servidor IOCP / epoll | Sí (Windows IOCP, Linux epoll) | Thread-por-conexión | Depende del servidor host | Sí | n/d |
| Espejo cliente JavaScript | Sí (incluye lib JS) | n/d | Sí (integración TMS WEB Core) | Manual | n/d |
| Port a .NET | Sí (misma API) | n/d | No | No | n/d |
| Versiones Delphi | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13, FPC | D7 - D13, FPC |
| Licencia | Comercial (existe Edición Free) | Gratis, estilo MIT | Comercial | Tri-licencia open source | Gratis |
| Soporte fabricante | Incluido con ediciones de pago | Comunidad (IndyProject) | Incluido con suscripción | Soporte comercial vía Synopse | Comunidad / autor único |
| Mantenimiento activo | Releases mensuales | Lento pero estable | Regular | Muy activo | Lento |
Eligiendo por escenario
Escenario 1: app de escritorio VCL que conecta a una API WebSocket de terceros
Necesitas un cliente que conecte a wss://, envíe JSON, reciba JSON, reconecte al desconectarse, maneje TLS. La ruta más corta es sgcWebSockets (arrastra el componente, establece URL, establece WatchDog.Attempts, listo) o TMS FNC WX si ya tienes licencia del pack FNC. Indy y Synapse requerirán escribir el framer tú mismo, lo cual es mucho trabajo para acertar con los edge cases de RFC 6455.
Escenario 2: construyendo un servidor WebSocket para cientos de clientes
sgcWebSockets es la elección natural si quieres un componente servidor autónomo que sirva HTTP y WebSocket en el mismo puerto con canales y broadcast. mORMot 2 es la elección natural si ya estás construyendo un servicio SOA/REST dentro del framework mORMot — su capa WebSocket se integra con el resto de la pila y está probada en batalla a escala.
Escenario 3: decenas de miles de conexiones concurrentes
Tanto sgcWebSockets (IOCP en Windows, epoll en Linux) como mORMot 2 se han desplegado en producción a esa escala. El modelo thread-por-conexión del Indy de fábrica difícilmente seguirá el ritmo sin trabajo arquitectónico significativo. El escalado de TMS FNC WX depende del servidor host elegido (XData/Sparkle).
Escenario 4: WebSocket dentro de un framework full-stack Pascal (REST, ORM, SOA)
mORMot 2. Es para lo que está mORMot. Adoptar sólo la capa WebSocket aisladamente es posible pero obtienes el máximo valor cuando abrazas el framework completo.
Escenario 5: cliente cross-framework (VCL, FMX, LCL, TMS WEB Core)
TMS FNC WX está diseñado para ese caso exacto — una API a través de los cuatro. sgcWebSockets cubre VCL, FMX y C++Builder más un port a .NET, pero no apunta a Lazarus/FPC.
Escenario 6: necesitas WebSocket más MQTT, AMQP, WebRTC, HTTP/2, APIs IA
sgcWebSockets es la única librería en esta comparación que distribuye todo lo anterior bajo un único producto y un único modelo de componente. Si tu proyecto está en trayectoria de “sólo un cliente WebSocket” a “una pila completa de tiempo real”, consolidar pronto suele ser más barato que pegar varias librerías más tarde.
Escenario 7: presupuesto ajustado, sólo open-source, proyecto de aficionado
mORMot 2 (open source) te da una implementación WebSocket seria gratis. La Edición Free de sgcWebSockets es una opción para uso no comercial. Indy con un add-on WebSocket comunitario es técnicamente posible pero espera leer tú mismo las RFCs relevantes.
Matriz de decisión
| Lo que más importa | Elección recomendada |
|---|---|
| Tiempo más rápido hasta cliente funcionando + soporte fabricante | sgcWebSockets |
| Framework full-stack open-source | mORMot 2 |
| Cross-framework (VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| Máximo de conexiones concurrentes, comercial | sgcWebSockets |
| Máximo de conexiones concurrentes, open source | mORMot 2 |
| Un producto que cubra WebSocket + MQTT + HTTP/2 + WebRTC + IA | sgcWebSockets |
| Gratis / proyecto sin compromiso de aficionado | mORMot 2 o Edición Free de sgcWebSockets |
| Ya dentro de un proyecto TMS XData / Sparkle | TMS FNC WX |
| Ya dentro de un proyecto mORMot | mORMot 2 |
Checklist antes de comprometerte
- Versión Delphi — confirma que el fabricante lista tu versión exacta (D7/D10.4/D11/D12/D13) en su matriz de compatibilidad.
- Conformidad RFC 6455 — comprueba que la librería pasa la suite Autobahn WebSocket, o al menos maneja correctamente fragmentación, control frames durante fragmentación y validación UTF-8.
- Proveedor TLS — OpenSSL es el más común; SChannel importa si no puedes distribuir DLLs OpenSSL; BoringSSL/ngtcp2 importan si necesitas QUIC.
- Semántica de reconexión — auto-reconexión, backoff exponencial, keep-alive ping/pong deberían ser configuración, no tu código.
- Modelo de escalado del servidor — IOCP/epoll para decenas de miles de conexiones; thread-por-conexión va bien hasta unos pocos miles.
- Compatibilidad de licencia — tri-licencia (mORMot), suscripción comercial (TMS), comercial por edición (sgcWebSockets), gratis (Indy/Synapse).
- Señal de mantenimiento — mira el changelog de los últimos 12 meses. Las librerías activas distribuyen algo al menos trimestralmente.
Reflexiones finales
El panorama Delphi WebSocket en 2026 está más sano de lo que parece a primera vista. Para un cliente rápido, sgcWebSockets te pone en marcha en minutos. Para un proyecto full-stack open-source, mORMot 2 es difícil de superar. Para clientes GUI cross-framework, TMS FNC WX es un encaje natural. El Indy y Synapse de fábrica siguen siendo valiosos por sus protocolos clásicos de Internet pero ninguno se adueña de WebSocket. La elección correcta depende de dónde se sitúa tu proyecto en el espectro de “un único endpoint” a “plataforma completa de tiempo real” — elige la librería que encaje con el requisito de hoy y donde esperas que esté el proyecto en dos años.