O que são WebSockets?

WebSocket é uma tecnologia web que oferece canais de comunicação bidirecionais e full-duplex sobre um único socket TCP, padronizada pela IETF como RFC 6455.

Comunicação em tempo real

O WebSocket permite uma comunicação persistente e bidirecional entre navegadores e servidores, sem a necessidade de polling constante.

Além do requisição e resposta do HTTP

O HTTP tradicional segue um padrão de requisição e resposta em que o cliente precisa iniciar cada troca. O WebSocket converte uma conexão HTTP em um canal persistente e full-duplex, no qual cliente e servidor podem enviar dados a qualquer momento. Isso elimina a sobrecarga de handshakes HTTP repetidos e permite uma interatividade em tempo real de verdade.

  • Bidirecional: tanto o cliente quanto o servidor podem enviar dados
  • A conexão persistente reduz a latência e a sobrecarga
  • Opera nas portas TCP padrão 80/443, atravessando firewalls
  • Padronizado pela IETF como RFC 6455
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

O handshake do WebSocket

Uma conexão WebSocket começa como uma requisição de upgrade HTTP e depois passa a um protocolo persistente de frames binários.

1. Requisição de upgrade HTTP

O cliente envia uma requisição HTTP GET com os cabeçalhos Upgrade: websocket e Connection: Upgrade, junto com um Sec-WebSocket-Key aleatório.

2. O servidor aceita

O servidor responde com HTTP 101 Switching Protocols, confirmando o upgrade. A conexão TCP passa a ser um canal WebSocket.

3. Mensagens full-duplex

Ambos os lados enviam livremente frames de texto ou binários com uma sobrecarga mínima de 2 bytes. A conexão permanece aberta até que um dos lados a feche.

Exemplo de WebSocket em Delphi

Conecte-se a um servidor WebSocket e troque mensagens com poucas linhas de código.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'www.esegece.com';
  WSClient.Port := 2053;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Handle incoming messages
  Memo1.Lines.Add('Received: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a text message to the server
  WSClient.WriteData('Hello, WebSocket!');
end;
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Pronto para criar aplicações em tempo real?

Baixe o sgcWebSockets e adicione suporte a WebSocket aos seus projetos Delphi, C++ Builder ou .NET hoje mesmo.