Glossário

WebSocket na comunicação entre sistemas

Atualizado em · 4 min de leitura

Definição

WebSocket na comunicação entre sistemas: WebSocket é um protocolo de comunicação que mantém uma conexão aberta e permanente entre dois sistemas, permitindo que ambos enviem mensagens a qualquer momento, sem precisar fazer uma nova requisição a cada troca. É usado quando informações precisam chegar em tempo real, como atualizações de status, notificações e painéis que se atualizam sozinhos.

Também conhecido como: WS, WebSocket, Web Socket, Websockets, Conexão WebSocket, Protocolo WebSocket

O que é WebSocket, em palavras simples?

Pense na diferença entre mandar cartas e fazer uma ligação telefônica. No modelo tradicional da web, baseado em HTTP, o sistema cliente envia um pedido, o servidor responde e a conversa termina. Para saber algo novo, é preciso enviar outro pedido. O WebSocket funciona como uma ligação que fica aberta: depois de conectados, os dois lados podem falar a qualquer momento.

Essa característica é chamada de comunicação bidirecional (ou full-duplex): tanto o cliente quanto o servidor podem iniciar o envio de uma mensagem, sem esperar que o outro pergunte primeiro.

Como funciona uma conexão WebSocket?

A conexão começa como uma requisição HTTP comum, em que o cliente pede ao servidor para trocar de protocolo. Se o servidor aceitar, a conexão é promovida a WebSocket e passa a ficar aberta. Esse primeiro passo é chamado de handshake (aperto de mãos).

A partir daí, as mensagens trafegam em pequenos blocos, chamados frames, que podem conter texto, como JSON, ou dados binários. Os endereços usam o prefixo ws:// para conexões sem criptografia e wss:// para conexões protegidas, equivalentes ao HTTPS. Em ambientes que lidam com dados fiscais, o uso de wss:// é o recomendado.

A conexão permanece ativa até que um dos lados a encerre ou ocorra uma falha de rede. Por isso, aplicações bem feitas costumam implementar reconexão automática e mensagens periódicas de verificação para saber se o outro lado ainda está respondendo.

Qual a diferença entre WebSocket, webhook e polling?

No polling, o sistema pergunta repetidamente ao servidor se algo mudou, por exemplo, a cada poucos segundos. É simples, mas gera muitas requisições inúteis quando não há novidades.

No webhook, o servidor envia uma requisição HTTP para um endereço do cliente quando um evento acontece, como a autorização de uma nota fiscal. Não há conexão aberta permanentemente: cada aviso é uma chamada independente. É o modelo mais comum para integrações entre servidores, inclusive em APIs fiscais.

No WebSocket, existe uma conexão contínua por onde as mensagens circulam nos dois sentidos. Ele brilha quando há muitas atualizações frequentes e uma tela ou aplicação precisa reagir imediatamente, mas exige manter a conexão viva e tratar quedas.

Onde o WebSocket aparece no contexto de emissão fiscal?

A emissão de documentos como NF-e, NFS-e e CT-e costuma seguir um fluxo assíncrono: o sistema envia o documento, o processamento acontece em etapas e o resultado (autorizado, rejeitado, em contingência) chega depois. O WebSocket pode ser usado para levar essas mudanças de status em tempo real até a interface do usuário.

Um uso típico é dentro do próprio sistema do cliente: o backend recebe a notificação do emissor fiscal, geralmente por webhook ou consulta, e repassa a atualização via WebSocket para o navegador do operador, que vê a nota mudar de status na tela sem recarregar a página. A comunicação entre servidores, por sua vez, costuma ficar com HTTP, webhooks e consultas à API.

Quais cuidados tomar ao usar WebSocket?

Segurança: use sempre conexões criptografadas (wss://) e autentique o cliente no início da conexão, por exemplo com um token. Como a conexão fica aberta por muito tempo, é importante prever a expiração e a renovação das credenciais.

Confiabilidade: conexões caem por instabilidade de rede, reinícios de servidor ou proxies que encerram conexões ociosas. O sistema deve reconectar com intervalos crescentes entre tentativas e conseguir recuperar o que perdeu durante a queda, consultando o estado atual dos documentos na API.

Escala: cada conexão aberta consome recursos do servidor. Em aplicações com muitos usuários simultâneos, é preciso planejar a infraestrutura, inclusive balanceadores de carga compatíveis com conexões persistentes.

Exemplos de WebSocket na comunicação entre sistemas

  • Um ERP exibe um painel de faturamento em que cada NF-e enviada aparece como 'processando' e muda para 'autorizada' ou 'rejeitada' assim que o backend recebe o retorno, com a atualização chegando ao navegador via WebSocket.
  • Um sistema de PDV com NFC-e mantém uma conexão WebSocket com o servidor da loja para avisar o operador de caixa, em tempo real, quando a emissão entra em contingência.
  • Uma plataforma de marketplace usa webhooks para receber do emissor fiscal o status das notas e, em seguida, distribui essas atualizações por WebSocket para os painéis dos vendedores conectados.
  • Uma transportadora acompanha em uma tela de operação o encerramento de MDF-e e a autorização de CT-e, com os dados atualizados continuamente sem que o usuário precise recarregar a página.

Perguntas frequentes

WebSocket substitui uma API REST?

Não. A API REST continua sendo usada para ações pontuais, como emitir, cancelar ou consultar um documento. O WebSocket complementa esse modelo quando é preciso receber atualizações contínuas em tempo real, principalmente em interfaces com usuários.

Preciso de WebSocket para saber se minha nota foi autorizada?

Normalmente não. Webhooks ou consultas periódicas à API resolvem bem a comunicação entre servidores. O WebSocket é útil quando você quer mostrar essa mudança instantaneamente na tela do usuário.

WebSocket é seguro para trafegar dados fiscais?

Pode ser, desde que use conexão criptografada (wss://), autenticação adequada no início da conexão e controle de permissões sobre quais informações cada cliente pode receber.

O que acontece se a conexão WebSocket cair?

As mensagens enviadas durante a queda podem ser perdidas. Por isso, o sistema deve reconectar automaticamente e consultar a API para sincronizar o status atual dos documentos.

Atualizado em · Como produzimos este glossário