Endpoint: WebSocket
O que é WebSocket?
WebSocket é um protocolo de comunicação em tempo real que permite a troca contínua de dados entre o cliente e o servidor. Ao contrário das requisições HTTP, que funcionam no modelo de requisição-resposta, WebSockets permitem comunicação bidirecional e persistente, onde tanto o cliente quanto o servidor podem enviar e receber dados a qualquer momento.
Essa abordagem torna o WebSocket uma escolha ideal para aplicações que exigem respostas instantâneas ou sincronização em tempo real, como chats, dashboards financeiros, jogos e monitoramento ao vivo.
Funcionamento Técnico
A conexão WebSocket começa com uma requisição HTTP padrão com o cabeçalho Upgrade: websocket
. Se o
servidor aceitar, a conexão é "elevada" para WebSocket. A partir daí, a comunicação ocorre por quadros (frames)
de dados que são muito menores e mais eficientes que os pacotes HTTP tradicionais.
Além disso, o canal permanece aberto até ser explicitamente fechado, o que significa menos overhead de conexão e menor uso de largura de banda para comunicações frequentes.
Vantagens do WebSocket
- Conexão persistente: ideal para aplicações que requerem atualização contínua sem recarregar a página.
- Menor latência: sem a necessidade de abrir novas conexões repetidamente.
- Eficiência: cabeçalhos mínimos e comunicação leve.
- Bidirecionalidade: facilita interações ricas e em tempo real.
Casos de Uso Reais
- Chats e mensagens instantâneas: como WhatsApp Web, Messenger, Slack.
- Jogos multiplayer: sincronização de ações entre jogadores em tempo real.
- Plataformas de trading: transmissão de cotações e gráficos em tempo real.
- Monitoramento: sistemas que exibem atualizações ao vivo de sensores, logs ou atividades do servidor.
Exemplo de Código Backend com Node.js (ws)
// Instale o pacote: npm install ws
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', socket => {
console.log('Novo cliente conectado');
socket.send('Bem-vindo ao servidor WebSocket da Apex T.I.C!');
socket.on('message', message => {
console.log(`Mensagem recebida: ${message}`);
socket.send(`Você disse: ${message}`);
});
socket.on('close', () => {
console.log('Cliente desconectado');
});
});
Esse código cria um servidor WebSocket que escuta na porta 8080, envia uma mensagem de boas-vindas ao cliente e ecoa cada mensagem recebida.
Exemplo de Código Frontend
<script>
const socket = new WebSocket('ws://localhost:8080');
socket.onopen = () => {
console.log('Conectado ao servidor');
socket.send('Olá, servidor!');
};
socket.onmessage = (event) => {
console.log('Mensagem do servidor:', event.data);
};
socket.onclose = () => {
console.log('Conexão encerrada');
};
</script>
Esse exemplo mostra como se conectar ao servidor WebSocket do lado do navegador e interagir com ele.
Boas Práticas e Considerações
- Use WSS (WebSocket Secure) em ambientes de produção para garantir segurança e confidencialidade.
- Implemente camadas de autenticação e autorização antes de permitir acesso ao canal.
- Utilize ping/pong para manter conexões ativas e identificar clientes desconectados.
- Implemente tratamento de erros e reconexão automática no frontend.
- Evite enviar dados sensíveis sem criptografia e validação.