Перейти к основному содержанию

Установка

Сборка клиента

Минимально:
Обратите внимание: .Build(ctx) устанавливает WebSocket-соединение до возврата - переданный контекст управляет начальным подключением. Если соединение не удаётся, вы сразу получаете ошибку. Далее клиент работает до Close().

Методы билдера

.URL(url) - Основной WebSocket-эндпоинт. Резерв: переменная ORBITFLARE_WS_URL.
.URLs(urls...) - Основной и резервные за один вызов.
.FallbackURL(url) / .FallbackURLs(urls...) - Добавить резервные эндпоинты. При переподключении SDK перебирает их.
.APIKey(key) - Лицензионный ключ. Резерв: переменная ORBITFLARE_LICENSE_KEY. Подставляется в URL при подключении, никогда не попадает в логи или ошибки.
.Retry(policy) - Backoff переподключения. По умолчанию: 100 мс начальная, 30 с максимум, множитель 2x, бесконечно.
.PingInterval(duration) - Как часто SDK отправляет WebSocket-кадры Ping. По умолчанию 10 с.
.MaxMissedPongs(n) - Сколько ping без ответа допустимо, прежде чем соединение будет закрыто. По умолчанию 3.
.Logger(logger) - *slog.Logger для событий жизненного цикла соединения. Если не задан, управляется через ORBITFLARE_LOG.

Доступные подписки

SlotSubscribe(ctx)

Срабатывает каждый раз, когда слот обработан, подтверждён или финализирован.
Каждое событие - JSON с полями slot, parent и root:

AccountSubscribe(ctx, address, commitment)

Срабатывает при изменении данных указанного аккаунта.
Возвращает данные аккаунта в base64 с lamports, owner и флагом executable.

LogsSubscribe(ctx, mentions, commitment)

Срабатывает для транзакций, упоминающих заданные адреса. Передайте пустой срез для всех транзакций.
Все логи:

SignatureSubscribe(ctx, signature, commitment)

Срабатывает один раз, когда транзакция достигает заданного уровня commitment. Удобно для подтверждения только что отправленной транзакции.

Чтение событий

Все подписки возвращают *ws.Subscription. Вызовите Next(ctx), чтобы получить следующее событие:
Next(ctx) возвращает (json.RawMessage, bool). Если ok равно false, подписка завершена (контекст отменён или клиент закрыт).

Отписка

Отправляет серверу сообщение об отписке. Если вы перестаёте читать подписку, не вызвав это, SDK обнаруживает осиротевшую подписку и отправляет отписку автоматически.

Несколько подписок

Все подписки работают на одном WebSocket-соединении. SDK внутри маршрутизирует уведомления к нужной подписке.
Новые подписки можно добавлять в любой момент, пока работают существующие.

Переподключение

Если соединение обрывается, фоновая горутина переподключается с экспоненциальным backoff и автоматически переоформляет все подписки. Ваши вызовы Next(ctx) продолжают работать - события возобновляются, как только соединение восстановлено.

Полный пример

Мониторинговая программа, которая подписывается на обновления слотов и изменения аккаунта USDC и печатает живую ленту.