Por que este guia existe
WebSocket deixou de ser um transporte de nicho. Dashboards de trading, backends de chat, jogos multiplayer, planos de controle IoT, respostas de IA em streaming, consoles de administração no navegador — quase toda aplicação interativa moderna abre pelo menos um WebSocket. Desenvolvedores Delphi que se perguntam “qual biblioteca devo usar?” em 2026 enfrentam um campo menor do que poderiam pensar: nem todo pacote clássico de networking em Delphi acompanhou a RFC 6455, e alguns dos que acompanharam são voltados a nichos bem específicos.
Este guia faz um levantamento das opções realistas em 2026 — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — e termina com uma matriz de decisão. Onde as afirmações dependem do release atual de um fornecedor, este artigo descreve a situação na data de publicação; sempre confirme os detalhes no changelog mais recente do fornecedor antes de se comprometer.
Os concorrentes
sgcWebSockets (eSeGeCe)
Biblioteca comercial focada em WebSocket e na família mais ampla de protocolos modernos (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, APIs de IA). RFC 6455 completo, per-message deflate, subprotocolos, canais, helpers de broadcast, WatchDog de reconexão automática, escalabilidade de servidor via IOCP, espelho de cliente JavaScript, port .NET. Edição Free para uso não comercial; quatro edições pagas. Delphi 7 até 13, além de C++Builder e .NET.
Indy (padrão)
O Indy padrão que vem com o Delphi não inclui cliente ou servidor WebSocket nativo. Vários add-ons da comunidade existem (procure no GitHub por “Indy WebSocket”), mas nenhum faz parte da distribuição oficial do IndyProject na data de publicação. Se você construir um WebSocket diretamente sobre o Indy, estará essencialmente escrevendo o framer por conta própria. Gratuito, vem na caixa.
TMS FNC WX (antigo TMS WEB Core / FNC WebSocket)
A TMS Software fornece um componente WebSocket multiframework como parte da família FNC (TTMSFNCWebSocketClient e um lado servidor via TMS XData / TMS Sparkle). Funciona em VCL, FMX, LCL e TMS WEB Core. O lado cliente é sólido; o lado servidor é entregue principalmente através da stack TMS XData / Sparkle, como recurso desses produtos. Comercial, com preço por assinatura por desenvolvedor. Delphi 10.x e mais recentes.
mORMot 2
Framework open-source full-stack da Synopse (Arnaud Bouchez). Inclui cliente e servidor WebSocket fortemente integrados à sua infraestrutura SOA/ORM/REST. O WebSocket do mORMot é maduro, rápido, suporta framing binário e per-message deflate, e é amplamente usado em produção para serviços de alta escala. O trade-off é que o mORMot é opinativo — é possível usar apenas a camada WebSocket, mas o encaixe natural acontece quando você adota o framework como um todo. Open source (tri-licença MPL/GPL/LGPL), Delphi 7 em diante, mais FreePascal.
Synapse
Biblioteca clássica open-source de redes em Pascal. Na data de publicação, o Synapse padrão não inclui uma implementação WebSocket. Algumas camadas WebSocket de terceiros construídas sobre o Synapse existem, mas estão sem manutenção ou são projetos de um único autor. Gratuito.
Matriz de recursos
| Recurso | sgcWebSockets | Indy (padrão) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| Cliente WebSocket | Sim | Não | Sim | Sim | Não |
| Servidor WebSocket | Sim | Não | Via TMS XData/Sparkle | Sim | Não |
| RFC 6455 (frames, masking, frames de controle) | Sim | n/d | Sim | Sim | n/d |
| Per-message deflate (RFC 7692) | Sim | n/d | Parcial | Sim | n/d |
| Subprotocolos / canais / broadcast | Sim, embutidos | n/d | Manual | Manual | n/d |
| Auto-reconexão / WatchDog | Sim | n/d | Manual | Manual | n/d |
| WebSocket sobre TLS (wss://) | Sim (OpenSSL, SChannel, BoringSSL) | n/d | Sim | Sim | n/d |
| Subprotocolos WebSocket-MQTT / STOMP / WAMP | Sim | n/d | Não | Limitado | n/d |
| HTTP/2, HTTP/3 | Sim | Não | Não | Limitado | Não |
| Escalabilidade de servidor IOCP / epoll | Sim (IOCP no Windows, epoll no Linux) | Thread por conexão | Depende do host server | Sim | n/d |
| Espelho de cliente JavaScript | Sim (entrega lib JS) | n/d | Sim (integração TMS WEB Core) | Manual | n/d |
| Port .NET | Sim (mesma API) | n/d | Não | Não | n/d |
| Versões Delphi | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13, FPC | D7 - D13, FPC |
| Licença | Comercial (com Edição Free) | Gratuita, estilo MIT | Comercial | Open source tri-licença | Gratuita |
| Suporte do fornecedor | Incluído nas edições pagas | Comunidade (IndyProject) | Incluído na assinatura | Suporte comercial via Synopse | Comunidade / autor único |
| Manutenção ativa | Releases mensais | Lenta, porém estável | Regular | Muito ativa | Lenta |
Escolhendo por cenário
Cenário 1: app desktop VCL que conecta a uma API WebSocket de terceiros
Você precisa de um cliente que conecte a wss://, envie JSON, receba JSON, reconecte na queda, lide com TLS. O caminho mais curto é o sgcWebSockets (arrasta o componente, define URL, define WatchDog.Attempts, pronto) ou o TMS FNC WX se você já licencia o pack FNC. Indy e Synapse exigirão escrever o framer por conta própria, o que dá bastante trabalho para acertar todos os edge cases da RFC 6455.
Cenário 2: construir um servidor WebSocket para centenas de clientes
O sgcWebSockets é a escolha natural se você quer um componente de servidor autônomo que sirva HTTP e WebSocket na mesma porta, com canais e broadcast. O mORMot 2 é a escolha natural se você já está construindo um serviço SOA/REST dentro do framework mORMot — sua camada WebSocket se integra com o resto da stack e é comprovada em escala.
Cenário 3: dezenas de milhares de conexões concorrentes
Tanto o sgcWebSockets (IOCP no Windows, epoll no Linux) quanto o mORMot 2 já foram colocados em produção nesse patamar. O modelo de thread por conexão do Indy padrão dificilmente acompanhará sem um trabalho arquitetural significativo. A escalabilidade do TMS FNC WX depende do host server escolhido (XData/Sparkle).
Cenário 4: WebSocket dentro de um framework full-stack Pascal (REST, ORM, SOA)
mORMot 2. É para isso que o mORMot existe. Adotar somente a camada WebSocket isoladamente é possível, mas você extrai o máximo de valor abraçando o framework como um todo.
Cenário 5: cliente multiframework (VCL, FMX, LCL, TMS WEB Core)
O TMS FNC WX é projetado exatamente para esse caso — uma API em todos os quatro. O sgcWebSockets cobre VCL, FMX e C++Builder além de um port .NET, mas não tem Lazarus/FPC como alvo.
Cenário 6: precisar de WebSocket mais MQTT, AMQP, WebRTC, HTTP/2, APIs de IA
O sgcWebSockets é a única biblioteca neste comparativo que entrega tudo isso sob um único produto e um único modelo de componentes. Se seu projeto está numa trajetória de “só um cliente WebSocket” para “uma stack completa em tempo real”, consolidar cedo costuma ser mais barato do que colar várias bibliotecas depois.
Cenário 7: orçamento apertado, só open source, projeto de hobby
O mORMot 2 (open source) lhe dá uma implementação WebSocket séria de graça. A Edição Free do sgcWebSockets é uma opção para uso não comercial. Indy com um add-on WebSocket da comunidade é tecnicamente possível, mas conte com ler as RFCs relevantes por conta própria.
Matriz de decisão
| O que mais importa | Escolha recomendada |
|---|---|
| Tempo mais curto até o cliente funcionando + suporte do fornecedor | sgcWebSockets |
| Framework full-stack open-source | mORMot 2 |
| Multiframework (VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| Mais conexões concorrentes, comercial | sgcWebSockets |
| Mais conexões concorrentes, open source | mORMot 2 |
| Um único produto cobrindo WebSocket + MQTT + HTTP/2 + WebRTC + IA | sgcWebSockets |
| Projeto de hobby gratuito / sem compromisso | mORMot 2 ou Edição Free do sgcWebSockets |
| Já está dentro de um projeto TMS XData / Sparkle | TMS FNC WX |
| Já está dentro de um projeto mORMot | mORMot 2 |
Checklist antes de fechar
- Versão do Delphi — confirme se o fornecedor lista sua versão exata (D7/D10.4/D11/D12/D13) na matriz de compatibilidade.
- Conformidade com a RFC 6455 — verifique se a biblioteca passa na suite de testes Autobahn para WebSocket, ou pelo menos trata fragmentação, frames de controle durante fragmentação e validação UTF-8 corretamente.
- Provedor TLS — OpenSSL é o mais comum; SChannel importa se você não pode distribuir DLLs do OpenSSL; BoringSSL/ngtcp2 importam se você precisa de QUIC.
- Semântica de reconexão — auto-reconexão, backoff exponencial e keep-alive com ping/pong devem ser configuração, não seu código.
- Modelo de escalabilidade do servidor — IOCP/epoll para dezenas de milhares de conexões; thread por conexão é suficiente até a casa dos milhares baixos.
- Compatibilidade de licença — tri-licença (mORMot), assinatura comercial (TMS), comercial por edição (sgcWebSockets), gratuita (Indy/Synapse).
- Sinal de manutenção — veja o changelog dos últimos 12 meses. Bibliotecas ativas entregam algo pelo menos trimestralmente.
Considerações finais
O cenário Delphi de WebSocket em 2026 é mais saudável do que parece à primeira vista. Para um cliente rápido, o sgcWebSockets coloca você funcionando em minutos. Para um projeto full-stack open-source, o mORMot 2 é difícil de bater. Para clientes GUI multiframework, o TMS FNC WX é um encaixe natural. Indy padrão e Synapse continuam valiosos por seus protocolos clássicos de Internet, mas nenhum dos dois domina WebSocket. A escolha certa depende de onde seu projeto está no espectro entre “um único endpoint” e “uma plataforma completa em tempo real” — escolha a biblioteca que combine tanto com o requisito de hoje quanto com onde você espera que o projeto esteja em dois anos.