Códigos de Erro
O WebSocket pode fechar a conexão com códigos de erro específicos. Além dos códigos padrão do WebSocket, o VoxFi usa códigos customizados na faixa 4000-4999.Códigos Customizados VoxFi
4001 - Unauthorized
Causa: Chave de API inválida ou ausente ao tentar se inscrever no canaluser.
Quando ocorre: Ao tentar se inscrever no canal user sem fornecer auth ou com uma chave de API inválida.
Solução:
- Verifique se você está fornecendo o campo
authna mensagem de subscribe; - Confirme que a chave de API está correta e ativa;
- Verifique se a chave de API não expirou ou foi desabilitada;
- Verifique se seu IP está na whitelist da chave de API.
4002 - Invalid Params
Causa: Parâmetros inválidos na conexão. Quando ocorre: Durante a validação inicial da conexão, quando dados de sessão são inválidos ou ausentes. Mensagens de erro comuns:"session is required": Sessão inválida ou ausente
4003 - Server Error
Causa: Erro interno do servidor. Quando ocorre: Quando ocorre um erro inesperado no servidor ao processar sua requisição. Solução: Tente novamente após alguns segundos. Se o problema persistir, entre em contato com o suporte.4004 - Invalid Message
Causa: Mensagem inválida ou parâmetros incorretos na mensagem de subscribe/unsubscribe. Quando ocorre: Ao enviar mensagens com formato ou conteúdo inválido. Possíveis causas:- Campo
channelinválido (deve ser"user","market"ou"event"); - Campo
filterinválido (deve ser"all","orderbook","trades"ou vazio); - Campos obrigatórios ausentes (
marketspara canal market,eventspara canal event,authpara canal user); - Formato JSON inválido;
- Tipo de mensagem inválido (deve ser
"subscribe"ou"unsubscribe").
"invalid channel": Canal especificado não existe;"invalid filter": Filtro especificado é inválido;"invalid message type": Tipo de mensagem inválido.
Códigos Padrão WebSocket
Além dos códigos customizados, o WebSocket pode retornar códigos padrão:- 1000: Fechamento normal (não é um erro);
- 1001: Endpoint indo embora;
- 1002: Protocol error (erro de protocolo);
- 1006: Conexão fechada anormalmente (sem código de fechamento);
- 1011: Erro interno do servidor.
Tratamento de Erros
Mensagens de Erro
Além dos códigos de fechamento, o WebSocket retorna mensagens de erro no camporeason ao fechar a conexão. Essas mensagens fornecem detalhes específicos sobre o erro:
Mensagens de Erro Comuns
"session is required"(código 4002): Sessão inválida ou ausente durante a validação inicial;"invalid channel"(código 4004): Canal especificado não existe (deve ser"user","market"ou"event");"invalid filter"(código 4004): Filtro especificado é inválido (deve ser"all","orderbook","trades"ou vazio);"invalid message type"(código 4004): Tipo de mensagem inválido (deve ser"subscribe"ou"unsubscribe");"failed to check x-api-key"(código 4001): Falha ao validar a chave de API;- Mensagens de erro JSON do Go quando há falha ao fazer unmarshal da mensagem (código 4004).
Boas Práticas de Tratamento de Erros
- Sempre Trate onclose: Implemente tratamento para o evento
onclosepara detectar desconexões; - Verifique Códigos de Erro: Use os códigos de erro para determinar a causa e tomar ações apropriadas;
- Reconexão Inteligente: Implemente reconexão automática com backoff exponencial para erros temporários;
- Não Reconecte para Erros Permanentes: Erros como 1003 (não autorizado) ou 1008 (mensagem inválida) indicam problemas que precisam ser corrigidos antes de reconectar;
- Logging: Registre todos os erros para debugging e monitoramento;
- Validação Prévia: Valide mensagens antes de enviar para evitar erros 1008;
- Tratamento de Timeout: Implemente timeout para conexões que não respondem.

