Net Propaganda 🔍
Net Propaganda
Editorias
Institucional
Apps e Software

WebSocket notifications: guia prático de implementação

A maioria dos tutoriais de WebSocket notifications ensina a abrir a conexão e para por aí. O problema aparece depois: usuário fecha a aba, volta, e a notificação que deveria ter chegado sumiu. Implementar de verdade significa cobrir o ciclo inteiro, do handshake à reconexão.

Para implementar WebSocket notifications, abra uma conexão persistente entre cliente e servidor, autentique o usuário no handshake, escute eventos no servidor e emita mensagens para o cliente. Trate reconexão com backoff exponencial e mantenha um fallback para mensagens perdidas enquanto o usuário estava offline.

Passo 1: Estabeleça a conexão e autentique no handshake

No servidor, aceite a conexão e valide o token do usuário antes de registrar o socket. No cliente, use new WebSocket('wss://...') e envie o token no primeiro frame ou via query string.

Erro comum: autenticar depois de aceitar qualquer conexão. Isso abre espaço para sockets anônimos consumindo memória. Valide na entrada.

Passo 2: Defina o formato da mensagem

Padronize um envelope com type, payload e timestamp. O cliente decide o que renderizar com base no type, não no texto.

Dica: versione o formato desde o início. Quando você adicionar um novo tipo de notificação, clientes antigos ignoram sem quebrar.

Passo 3: Trate reconexão e mensagens offline

WebSocket cai. Rede instável, aba em background, servidor reiniciando. Implemente reconexão com backoff exponencial e, ao reconectar, peça ao servidor as notificações não entregues desde o último timestamp conhecido.

Sem isso, o usuário perde o evento e você perde a confiança dele no sistema.

Passo 4: Escale com cuidado

Um servidor único funciona em desenvolvimento. Em produção, com múltiplas instâncias, use um broker (Redis Pub/Sub, por exemplo) para distribuir eventos entre os nós. Cada instância mantém seus sockets e escuta o canal comum.

Checklist rápido

  • Conexão autenticada no handshake
  • Envelope de mensagem padronizado e versionado
  • Reconexão com backoff exponencial
  • Recuperação de mensagens offline por timestamp
  • Broker para múltiplas instâncias

FAQ

WebSocket é obrigatório para notificações push?

Não. Push notifications no navegador usam a Push API com service workers, que funcionam mesmo com a aba fechada. WebSocket serve para notificações em tempo real enquanto o usuário está com a página aberta. Os dois podem coexistir.

Posso usar SSE em vez de WebSocket?

Sim, se a comunicação for só servidor para cliente. SSE é mais simples e reconecta sozinho. WebSocket vale quando você precisa de canal bidirecional, como chat ou confirmação de leitura.

Como testar reconexão localmente?

Derrube o servidor com Ctrl+C e observe o cliente. Se ele não tentar reconectar em alguns segundos, seu backoff não está implementado. Simule também perda de rede no DevTools.

Preciso de HTTPS para WebSocket?

Em produção, sim. Use wss:// (WebSocket sobre TLS). Navegadores bloqueiam ws:// em páginas HTTPS por mixed content.

Quantas conexões um servidor aguenta?

Depende de memória e file descriptors. Um servidor Node.js bem configurado lida com dezenas de milhares de conexões ociosas, mas o número cai conforme o tráfego de mensagens aumenta. Meça antes de prometer escala.

Sirley Mancuso Galvão
Especialista em mídia de influência
Conecta marcas e criadores há 9 anos; separa influência real de seguidor comprado.
Ver todos os artigos →