context.slot: ele delimita a janela que você perdeu durante uma desconexão. Este guia cobre por que as conexões são fechadas, como reconectar de forma limpa e como usá-la.
Por Que as Conexões São Fechadas
Toda desconexão tem um código de fechamento do WebSocket que indica o que aconteceu e o que fazer em seguida:
O servidor faz pings a cada 15 segundos, então uma conexão saudável, mas silenciosa, ainda carrega tráfego. Se você não vir nada por mais de um minuto — nenhuma notificação, nenhum ping — assuma que a conexão está morta e reconecte em vez de esperar que o socket lhe diga.
Mantenha a Conexão Viva
Se seu filtro for estreito o suficiente para que possa passar 10 minutos sem uma correspondência, envie um JSON-RPCping explícito em um intervalo menor do que isso:
Reconectar e Detectar a Lacuna
1
Reconectar com Backoff
Em qualquer desconexão — esperada ou não — reconecte com backoff exponencial. IDs de assinatura não sobrevivem a uma reconexão, então reenvie
parsedTransactionSubscribe para cada filtro que você tinha aberto.2
Acompanhe context.slot Através de Desconexões
Mantenha o último
context.slot que você viu antes da desconexão. A lacuna entre esse slot e o primeiro slot que você vê após reconectar é exatamente a janela que você perdeu — nada mais, nada menos.3
Preencha se Precisar
Se sua aplicação não tolerar a lacuna, preencha essa janela de slot a partir do RPC:
getSignaturesForAddress para enumerar transações no intervalo, depois getTransaction para buscar cada uma. Este é um passo de reconciliação manual — o Streams Analisados em si não reproduz.context.slot é o que sobrevive a uma reconexão: acompanhe o slot mais alto que você processou completamente antes da desconexão e trate tudo depois dele como a janela de preenchimento.
Lidando com Erros JSON-RPC
Pedidos que falham retornam um erro JSON-RPC em vez de um resultado, então você pode bifurcar emerror.code:
-32602 e -32000 significam que a solicitação em si está errada — corrija o filtro, não tente novamente como está. -32001 e -32002 são transitórios; tente novamente com o mesmo backoff que você usa para reconexões.
Próximos Passos
Início Rápido
Referência completa do protocolo: métodos, campos de filtro, limites.
Acompanhe Trocas de Júpiter
Construa um filtro ao qual essa conexão possa assinar.