Pular para o conteúdo principal
O zapo expõe problemas por três canais de evento:
  • connection com status: 'close' — o socket caiu, trazendo um reason e um code opcional.
  • stream_failure — uma falha de nível de stream, geralmente logo antes de um close.
  • stanza_error — uma única requisição/stanza foi rejeitada, sem derrubar a conexão.
Para o loop de reconexão em si (backoff, isLogout, shutdown gracioso), veja Reconexão. Esta página é sobre entender por que algo falhou.

Razões de desconexão

O evento close é { status: 'close', reason, code, isLogout }. reason é uma string WaDisconnectReason; code é um WaConnectionCode numérico (ou null). Use-os para decidir se deve reconectar:
stream_error_force_login (código 515) não é fatal — é um “reconecte agora” de rotina que o servidor envia logo após o pareamento e ocasionalmente durante a sessão. Apenas reconecte com as credenciais armazenadas.
Razões transitórias em que vale reconectar incluem stream_error_force_login, stream_error_ack, stream_error_xml_not_well_formed, stream_error_other, failure_service_unavailable e comms_stopped. client_disconnected significa que você chamou disconnect() — esperado, não reconecte.

Referência de códigos

Quando presente, o code (no evento close e em stream_failure.failureCode) é um de: As strings de razão vivem em WA_DISCONNECT_REASONS e os códigos de stream 515/516 em WA_STREAM_SIGNALING, ambos exportados da raiz do pacote. Os valores numéricos de code são tipados como WaConnectionCode (também exportado).

Falhas de stream

stream_failure (WaIncomingFailureEvent) carrega o detalhe bruto da falha e geralmente precede uma desconexão — registre para contexto:

Stanzas de erro

stanza_error (WaIncomingErrorStanzaEvent) reporta que uma única stanza foi rejeitada — por exemplo uma query malformada ou uma requisição limitada (throttle). A conexão continua de pé:
Um client.message.send ou client.lowlevel.query rejeitado normalmente também rejeita a própria promise, então envolva chamadas individuais em try/catch para tratamento por operação; use stanza_error para visibilidade de erros que não estão atrelados a uma chamada que você deu await.

Veja também

Reconexão

O loop de backoff e o tratamento de isLogout.

Troubleshooting

Armadilhas comuns e respostas rápidas.
Última modificação em 28 de maio de 2026