Documentation Index
Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
Use this file to discover all available pages before exploring further.
Kurulum
npm install @orbitflare/sdk ws
ws isteğe bağlı bir peer bağımlılıktır. Yalnızca WebSocket istemcisini kullanıyorsanız kurun.
İstemciyi oluşturma
import { WsClientBuilder, type RetryPolicy } from '@orbitflare/sdk';
const client = await new WsClientBuilder()
.url('ws://ny.rpc.orbitflare.com')
.fallbackUrl('ws://fra.rpc.orbitflare.com')
.apiKey('ORBIT-XXXXXX-NNNNNN-NNNNNN')
.retry({
initialDelayMs: 100,
maxDelayMs: 30_000,
multiplier: 2.0,
maxAttempts: 0,
})
.pingIntervalSecs(10)
.maxMissedPongs(3)
.build();
Minimal:
const client = await new WsClientBuilder()
.url('ws://ny.rpc.orbitflare.com')
.build();
.build() öğesinin async olduğuna dikkat edin - sonuç dönmeden önce WebSocket bağlantısını kurar. Bağlantı başarısız olursa promise hemen reddedilir.
Builder yöntemleri
.url(url) - Birincil WebSocket uç noktası. ORBITFLARE_WS_URL ortam değişkenine düşer.
.url('ws://ny.rpc.orbitflare.com')
.urls([...]) - Tek çağrıda birincil + yedekler.
.urls(['ws://ny.rpc.orbitflare.com', 'ws://fra.rpc.orbitflare.com'])
.fallbackUrl(url) / .fallbackUrls([...]) - Yedek uç noktalar ekler. Yeniden bağlanırken SDK aralarında döner.
.fallbackUrl('ws://fra.rpc.orbitflare.com')
.apiKey(key) - Lisans anahtarı. ORBITFLARE_LICENSE_KEY ortam değişkenine düşer.
.apiKey('ORBIT-XXXXXX-NNNNNN-NNNNNN')
.retry(policy) - Yeniden bağlanma geri çekilmesi. Varsayılan: 100 ms başlangıç, 30 sn üst sınır, 2x çarpan, sonsuz deneme.
.retry({
initialDelayMs: 200,
maxDelayMs: 15_000,
multiplier: 2.0,
maxAttempts: 0,
})
.pingIntervalSecs(n) - SDK’nın WebSocket Ping çerçevelerini gönderme sıklığı. Varsayılan: 10.
.maxMissedPongs(n) - Bağlantıyı sonlandırmadan önce yanıtsız ping sayısı. Varsayılan: 3.
Kullanılabilir abonelikler
slotSubscribe()
Bir slot işlendiğinde, onaylandığında veya finalize edildiğinde tetiklenir.
const sub = await client.slotSubscribe();
Her olay slot, parent ve root alanlarına sahip bir nesnedir:
{"slot": 413014740, "parent": 413014739, "root": 413014708}
accountSubscribe(address, commitment)
Belirtilen hesabın verisi değiştiğinde tetiklenir.
const sub = await client.accountSubscribe(
'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
'confirmed',
);
Lamport, owner ve çalıştırılabilir bayrağı ile base64 kodlanmış hesap verisini döndürür.
logsSubscribe(mentions, commitment)
Verilen adresleri anan işlemler için tetiklenir. Tüm işlemler için boş dizi geçin.
const sub = await client.logsSubscribe(
['6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P'],
'confirmed',
);
Tüm günlükler:
const sub = await client.logsSubscribe([], 'confirmed');
signatureSubscribe(signature, commitment)
Bir işlem verilen taahhüt düzeyine ulaştığında bir kez tetiklenir. Az önce gönderdiğiniz bir işlemi onaylamak için kullanışlıdır.
const sub = await client.signatureSubscribe('5K8F2j...', 'confirmed');
Olayları okuma
Tüm abonelikler bir WsSubscription döndürür. Sonraki olay için .next() çağırın:
while (true) {
const event = await sub.next();
if (event === undefined) break;
console.log(event);
}
.next() abonelik kapatıldığında undefined ile resolve olur.
Olay dinleyici tarzında bir geri çağırma da ekleyebilirsiniz:
const off = sub.on((event) => {
console.log(event);
});
// later: off();
Abonelikten çıkma
Sunucuya abonelikten çıkma iletisi gönderir. Bunu çağırmadan aboneliği düşürürseniz SDK yetimi tespit eder ve abonelikten çıkmayı otomatik gönderir.
Birden çok abonelik
Tüm abonelikler tek WebSocket bağlantısında çalışır. SDK bildirimleri doğru aboneliğe dahili olarak yönlendirir.
const slots = await client.slotSubscribe();
const usdc = await client.accountSubscribe('EPjFWdd5...', 'confirmed');
const logs = await client.logsSubscribe(['6EF8r...'], 'confirmed');
Mevcut abonelikler çalışırken istediğiniz zaman yeni abonelik ekleyebilirsiniz.
Yeniden bağlanma
Bağlantı koparsa arka plan görevi üstel geri çekilme ile yeniden bağlanır ve her şeyi otomatik yeniden abone eder. .next() çağrılarınız çalışmaya devam eder - bağlantı geri gelince olaylar sürer.
Tam örnek
Slot güncellemelerine ve USDC için hesap değişikliklerine abone olan, canlı bir akış yazan bir izleme betiği.
import { WsClientBuilder } from '@orbitflare/sdk';
async function main() {
const client = await new WsClientBuilder()
.url('ws://ny.rpc.orbitflare.com')
.build();
const slots = await client.slotSubscribe();
const usdc = await client.accountSubscribe(
'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
'confirmed',
);
console.log('watching slots and USDC mint account...');
slots.on((slot) => {
const s = slot?.slot ?? 0;
const parent = slot?.parent ?? 0;
console.log(`slot ${s} (parent ${parent})`);
});
usdc.on((acct) => {
const lamports = acct?.lamports ?? 0;
const data = acct?.data?.[0];
const dataLen = typeof data === 'string' ? data.length : 0;
console.log(`USDC mint updated: ${lamports} lamports, ${dataLen} bytes`);
});
await new Promise(() => {});
}
void main();