Componente WebSocket Delphi — cliente e servidor de produção

Uma implementação WebSocket nativa, RFC 6455, para Delphi e C++Builder. Construa clientes e servidores que sustentam milhares de conexões concorrentes, rodam em Windows, macOS, Linux, iOS e Android e sobrevivem a redes instáveis com a reconexão automática WatchDog embutida.

O que é um componente WebSocket Delphi?

Um componente VCL/FMX drop-in que transforma o protocolo WebSocket em uma API de propriedades e eventos que desenvolvedores Delphi reconhecem como nativa.

Um componente WebSocket Delphi é um componente não visual que você arrasta para um form (ou instancia em runtime) para abrir um canal TCP full-duplex entre uma aplicação Delphi e qualquer par WebSocket RFC 6455 — um navegador, um serviço Node.js, um reverse proxy nginx, um broker Mosquitto, um endpoint OpenAI Realtime ou outro processo Delphi. Diferente de polling HTTP, um WebSocket mantém a conexão aberta: o servidor pode empurrar dados no instante em que estiverem disponíveis, com latência de milissegundos e sem o overhead HTTP por mensagem.

O sgcWebSockets é a biblioteca WebSocket de referência no ecossistema Delphi desde 2013. Os mesmos componentes TsgcWebSocketClient e TsgcWebSocketHTTPServer rodam inalterados do Delphi 7 ao Delphi 13, em Win32, Win64, Linux64, macOS, iOS e Android, e em C++Builder C2007 a C13. Não há runtime gerenciado, nem camada de interop .NET, nem bridge JavaScript — é uma implementação Pascal pura que compila dentro do seu binário.

Classe de componente

TsgcWebSocketClient / TsgcWebSocketHTTPServer

Padrões

RFC 6455, RFC 7692 (permessage-deflate)

Plataformas

Windows, macOS, Linux, iOS, Android

Versões Delphi

Delphi 7 → Delphi 13 + C++Builder

Por que escolher sgcWebSockets em vez de fazer o seu

Escrever um handler PING/PONG é fácil. Sobreviver a um reverse proxy que termina TLS, a um módulo WebSocket do IIS, a um firewall corporativo, a um handover de celular móvel e a um teste de carga de 5.000 clientes não é.

Uma API, todos os transportes

WebSocket puro (ws://), WebSocket TLS (wss://), WebSocket sobre HTTP/2, WebSocket sobre QUIC/HTTP/3, fallback TCP cru — mesmo componente, mesmos eventos. Troque o transporte mudando uma propriedade.

Reconexão automática WatchDog

Habilite WatchDog e o cliente vai reconectar com backoff exponencial, reautenticar, reassinar tópicos MQTT e repetir publicações enfileiradas — o padrão canônico para mobile / IoT, já escrito.

Threading está resolvido

O servidor usa um reactor IOCP / kqueue / epoll por baixo. Você escreve handlers de evento; a biblioteca os agenda em um pool de threads com serialização por conexão.

permessage-deflate

Negociado automaticamente conforme a RFC 7692. Reduz payloads JSON em 70–90 % e é suportado por todo navegador moderno e load balancer.

Subprotocolos inclusos

MQTT 3.1.1/5.0, AMQP 0.9.1/1.0, STOMP, WAMP e Server-Sent Events rodam sobre o mesmo transporte WebSocket — um socket TCP, vários protocolos de aplicação.

Servidor HTTP também

O TsgcWebSocketHTTPServer serve arquivos estáticos, endpoints REST, recursos protegidos por JWT e OAuth2, respostas comprimidas em gzip e upgrade HTTP/2 no mesmo processo que seu endpoint WebSocket.

TLS que funciona

OpenSSL (multiplataforma), SChannel (TLS de kernel do Windows) ou HTTP.sys. Certificados de cliente, SNI, ALPN, TLS 1.3 com 0-RTT.

Canais & broadcast

Channels do lado servidor agrupam conexões por nome. Broadcast, BroadcastByChannel e BroadcastByUser fazem fan-out para milhares de pares em uma única chamada.

Battle-tested

Em produção em bancos, exchanges, frotas IoT e firmas de trading desde 2013. Atualizado todo mês; o history.txt registra cada correção.

Checklist de recursos

Tudo o que a RFC diz, mais o endurecimento operacional que deployments reais exigem.

CapacidadeClienteServidor
Framing RFC 6455 (text, binary, ping, pong, close)SimSim
permessage-deflate (RFC 7692)SimSim
Frames fragmentados & continuationSimSim
Mensagens do cliente mascaradasSimn/d
TLS 1.2 / 1.3 (OpenSSL + SChannel)SimSim
Certificados de cliente / mTLSSimSim
Autenticação JWT & OAuth2SimSim
HTTP/2 + WebSocket (RFC 8441)SimSim
HTTP/3 + WebSocket sobre QUIC (RFC 9220)SimSim
Reconexão automática WatchDogSimn/d
Heart-beat (PING/PONG)SimSim
Canais & broadcastn/dSim
Subprotocolos (MQTT / AMQP / STOMP / WAMP / SSE)SimSim
Hospedagem HTTP.sys (kernel do Windows)n/dSim
Modo daemon LinuxSimSim

Hello WebSocket — cliente Delphi em 12 linhas

Arraste um TsgcWebSocketClient para o form, defina Host / Port, trate OnMessage, defina 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;

O lado servidor é simétrico — arraste um TsgcWebSocketHTTPServer, defina Port, trate OnConnect e OnMessage, chame Broadcast para fazer fan-out a cada par conectado.

Versões suportadas de Delphi & C++Builder

Uma única árvore de código, 22 pacotes de runtime — cobrindo cada release do Delphi ainda em uso comercial ativo.

EdiçãoVersões
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)
PlataformasWin32, Win64, Linux64, macOS Intel/ARM, iOS device + simulator, Android ARM/ARM64

Continue explorando

O transporte WebSocket é a fundação de todo outro protocolo da biblioteca.

O que são WebSockets?

Contexto sobre o protocolo RFC 6455, o handshake, o framing e casos de uso.

Subprotocolo MQTT

Rode MQTT 3.1.1 / 5.0 sobre a mesma conexão WebSocket.

Cliente & servidor HTTP/2

HTTP/2 multiplexado com server push e WebSocket-sobre-HTTP/2.

Picker de protocolo de tempo real

WebSocket vs SSE vs HTTP/2 push vs MQTT vs WebRTC — matriz de decisão.

Blog: canais, grupos & usuários

Guia de padrões para broadcast a subconjuntos de conexões.

Blog: WatchDog & BeforeConnect

Como o ciclo de vida de reconexão automática funciona por baixo.

Blog: Compressão mais rápida

Ajuste de permessage-deflate para throughput vs CPU.

Perguntas frequentes

Quais versões do Delphi são suportadas?

Cada release comercial do Delphi do Delphi 7 (2002) ao Delphi 13 (2025), além das versões correspondentes do C++Builder. Entregamos 22 pacotes de runtime separados — um por IDE — a partir de uma única árvore de código. Não há um SKU “legado” à parte; todo cliente recebe todas as versões.

O componente WebSocket suporta TLS / wss://?

Sim. Defina URL := 'wss://...' e escolha um provedor TLS: OpenSSL (multiplataforma, vem com o trial), SChannel (TLS de kernel do Windows, sem DLLs para implantar) ou HTTP.sys (lado servidor, certificado armazenado no Windows certificate store). Certificados de cliente, SNI, ALPN, TLS 1.3 e 0-RTT são todos suportados.

Quantas conexões concorrentes o servidor aguenta?

No Windows o servidor usa IOCP e escala rotineiramente para 50.000+ conexões concorrentes por processo em hardware comum. No Linux o reactor epoll escala de forma semelhante. O limite duro está no SO (file descriptors, faixa de portas efêmeras, memória do kernel), não na biblioteca.

Qual é o modelo de licenciamento?

Licença perpétua por desenvolvedor, royalty-free, com um ano de atualizações incluso. Licenças single-developer, team e site disponíveis — veja preços. O código-fonte está incluído em cada edição comercial.

Pronto para adicionar WebSockets ao seu app Delphi?

Baixe o trial totalmente funcional de 30 dias — cliente, servidor, todos os subprotocolos, todas as versões do Delphi.