Skip to main content
Pengiriman dilakukan paling banyak satu kali — tidak ada pemutaran ulang. Apa pun yang dikonfirmasi saat koneksi terputus tidak akan dikirim ulang, jadi klien produksi perlu mendeteksi kekosongan tersebut dan memutuskan apakah perlu mengisinya kembali. Sinyal untuk melakukannya adalah context.slot: nilai ini menentukan batas rentang yang terlewat selama koneksi terputus. Panduan ini menjelaskan alasan koneksi ditutup, cara menyambungkan kembali dengan benar, dan cara menggunakannya.

Alasan Koneksi Ditutup

Setiap penutupan memiliki kode penutupan WebSocket yang memberi tahu Anda apa yang terjadi dan tindakan selanjutnya: Server mengirim ping setiap 15 detik, sehingga koneksi yang sehat tetapi sepi tetap membawa lalu lintas. Jika Anda tidak menerima apa pun selama lebih dari satu menit — tidak ada notifikasi maupun ping — anggap koneksi terputus dan sambungkan kembali tanpa menunggu socket memberi tahu Anda.

Filter Sepi dan Batas Waktu Tidak Aktif

Jika filter Anda cukup sempit sehingga secara wajar tidak menemukan kecocokan selama 10 menit, perkirakan server akan menutup koneksi dengan kode 1000. Tangani seperti penutupan lainnya: sambungkan kembali, berlangganan ulang, dan isi kembali kekosongan seperti yang dijelaskan di bawah ini.

Menyambungkan Kembali dan Mendeteksi Kekosongan

1

Reconnect with Backoff

Pada setiap penutupan — baik yang diperkirakan maupun tidak — sambungkan kembali dengan backoff eksponensial. ID langganan tidak dipertahankan setelah penyambungan ulang, jadi kirim ulang parsedTransactionSubscribe untuk setiap filter yang sebelumnya terbuka.
2

Track context.slot Across Disconnects

Simpan context.slot terakhir yang Anda lihat sebelum koneksi terputus. Kekosongan antara slot tersebut dan slot pertama yang Anda lihat setelah tersambung kembali merupakan rentang persis yang terlewat — tidak lebih dan tidak kurang.
3

Backfill if You Need To

Jika aplikasi Anda tidak dapat menerima kekosongan tersebut, isi kembali rentang slot itu dari RPC: gunakan getSignaturesForAddress untuk mencantumkan transaksi dalam rentang tersebut, lalu getTransaction untuk mengambil setiap transaksi. Ini merupakan langkah rekonsiliasi manual — Parsed Streams tidak melakukan pemutaran ulang.
context.slot adalah nilai yang dipertahankan setelah penyambungan ulang: lacak slot tertinggi yang telah Anda proses sepenuhnya sebelum koneksi terputus, lalu perlakukan semua slot setelahnya sebagai rentang pengisian ulang.

Menangani Kesalahan JSON-RPC

Permintaan yang gagal akan mengembalikan kesalahan JSON-RPC sebagai pengganti hasil, sehingga Anda dapat membuat percabangan berdasarkan error.code: -32602 dan -32000 berarti permintaannya sendiri salah — perbaiki filternya, jangan coba ulang tanpa perubahan. -32001 dan -32002 bersifat sementara; coba lagi dengan backoff yang sama seperti yang Anda gunakan untuk penyambungan ulang.

Langkah Berikutnya

Quickstart

Referensi protokol lengkap: metode, field filter, dan batas.

Track Jupiter Swaps

Buat filter yang dapat dilanggani oleh koneksi ini.