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.
Filtros com pouca atividade e o tempo limite de inatividade
Se o filtro for restrito o suficiente para que possa ficar legitimamente 10 minutos sem nenhuma correspondência, espere que o servidor encerre a conexão com o código 1000. Trate isso como qualquer outro encerramento: reconecte, refaça as assinaturas e preencha a lacuna conforme descrito abaixo.Reconectar e detectar a lacuna
1
Reconnect with Backoff
Em qualquer encerramento — esperado ou não —, reconecte usando backoff exponencial. Os IDs de assinatura não persistem após uma reconexão. Portanto, reenvie
parsedTransactionSubscribe para cada filtro que estava aberto.2
Track context.slot Across Disconnects
Mantenha o último
context.slot que você viu antes da desconexão. A diferença entre esse slot e o primeiro slot visto após a reconexão é exatamente a janela que você perdeu — nada mais, nada menos.3
Backfill if You Need To
Se a sua aplicação não puder tolerar a lacuna, preencha essa janela de slots via RPC: use
getSignaturesForAddress para enumerar as transações no intervalo e, em seguida, getTransaction para buscar cada uma delas. Essa é uma etapa de reconciliação manual — o próprio Parsed Streams não reproduz os dados.context.slot é o que persiste após uma reconexão: acompanhe o slot mais alto que você processou por completo antes da desconexão e trate tudo depois dele como a janela de preenchimento.
Como lidar com erros JSON-RPC
As solicitações que falham retornam um erro JSON-RPC em vez de um resultado. Assim, você pode criar uma ramificação com base emerror.code:
-32602 e -32000 significam que a própria solicitação está incorreta — corrija o filtro e não tente novamente sem alterá-lo. -32001 e -32002 são erros temporários; tente novamente com o mesmo backoff usado nas reconexões.
Próximas etapas
Quickstart
Referência completa do protocolo: métodos, campos de filtro e limites.
Track Jupiter Swaps
Crie um filtro que possa ser assinado por esta conexão.