Skip to main content
A entrega é no máximo uma vez — não há repetição. O que foi confirmado enquanto você estava desconectado não é reenviado, então um cliente em produção precisa detectar a lacuna e decidir se deve preenchê-la. O sinal para isso é 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 em error.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.