Pular para o conteúdo
Decoding Chat API

Limites e limites de taxa

Toda conexão do Gateway principal possui limites sobre o que envia, quanto tempo sua sessão vive, quantos comandos executa simultaneamente e quanto o Decoding Chat reproduz para ela. Exceder um limite fecha a conexão com um código de fechamento, descarta o payload ou ajusta o valor. O registro de motivos de fechamento define cada motivo exato.

Framing rege a versão do protocolo, o limite do payload e o contrato de compressão. Uma única mensagem WebSocket de entrada está limitada a 4.096 bytes brutos na rede e a mais 4.096 bytes após a descompressão; ultrapassar qualquer um desses limites fecha com 4002 e motivo Payload too large.

Uma mensagem comprimida que ultrapasse 10 MiB ao descomprimir fecha com 4002 e motivo Decompression failed.

O Hello anuncia um intervalo de heartbeat de 41.250 ms. O Gateway verifica o estado a cada 13.750 ms. Quando 37.125 ms decorrerem desde a última confirmação, o servidor envia o Opcode 1, ao qual o cliente deve responder imediatamente. Se nenhuma confirmação for aceita antes de 45.000 ms, a conexão fecha com 4009 e motivo Heartbeat timeout.

Não há prazo separado para autenticação. A regra de heartbeat é a responsável por fechar sockets que nunca se autenticam.

Uma sessão desconectada permanece retomável por 60.000 ms. Sua presença é publicada como offline 5.000 ms após a queda do socket. Um Resume bem-sucedido dentro da janela restaura o status previamente selecionado.

Uma credencial de usuário mantém no máximo 100 sessões ativas simultâneas. Identifys excedentes fecham com 4008 e motivo Too many sessions. Credenciais de bot são delimitadas pelo teto de servidores por shard (2.500 servidores por shard).

Valores padrão configurados:

  • Por WebSocket: 600 payloads em janela deslizante de 60 segundos.
  • Por sessão autenticada: 600 payloads em janela fixa de 60 segundos.
  • Por IP de origem: 6.000 payloads em janela fixa de 60 segundos.
  • Ultrapassar qualquer um desses orçamentos encerra a conexão com 4008 e motivo Rate limited.

Conexões simultâneas por IP: 256 conexões Gateway. Conexões adicionais fecham com 4008 e motivo Too many connections antes mesmo do envio do Hello.

Tentativas de Identify por IP: 300 tentativas em janela fixa de 60 segundos. Tentativas excedentes são descartadas silenciosamente sem resposta e sem desconectar o socket. O cliente deve reenviar quando o orçamento recuperar.

Presence Update: limite de 5 comandos por WebSocket em janela deslizante de 20 segundos.

Voice State Update: os 2 primeiros comandos por sessão em janela de 1 segundo são processados imediatamente. Atualizações subsequentes entram em uma fila por sessão com até 64 comandos (drenando 1 comando a cada 500 ms).

Request Guild Members: bots solicitando listas completas sofrem limite de 1 requisição aceita a cada 30 segundos por servidor. Requisições excedentes produzem o evento Rate Limited.

Um único WebSocket processa no máximo 4 comandos delimitados simultaneamente entre Request Guild Members, Lazy Request, Request Guild Counts e Request Channel Member Counts. Cada requisição possui prazo limite de 10.000 ms. Requisições recebidas quando todos os 4 slots estão ocupados são descartadas silenciosamente.

O histórico de retomada (Resume) retém no máximo 4.096 eventos de Dispatch e até 16.777.216 bytes (16 MiB no total). Ao ultrapassar qualquer um desses limites, os eventos mais antigos são descartados do início do buffer.

Dispatches individuais maiores que 2 MiB são entregues na conexão ativa mas nunca armazenados no buffer de replay.

Guild Members Chunk, Guild Sync e Guild Member List Update são entregues exclusivamente em tempo real e nunca entram no buffer de replay.

Heartbeats com número de sequência liberam da memória todos os Dispatches de sequência menor ou igual à informada. O cliente DEVE confirmar apenas sequências que já tenha terminado de processar.

Canais de voz em servidores admitem até user_limit usuários (0 = ilimitado). Canais com câmeras ativadas admitem no máximo 25 participantes no total. Conexões adicionais de vídeo recebem VOICE_CAMERA_USER_LIMIT.

Um usuário mantém no máximo voice_connection_limit conexões simultâneas no mesmo canal de voz (padrão 5, configurável entre 1 e 100 no canal).