RustMinerSystem

Документация

WebSocket, ошибки и совместимость

Real-time Stratum WebSocket, подписки, состояния ошибок, совместимость и неиспользуемые endpoints RustMinerSystem.

WebSocket, ошибки и совместимость

URL WebSocket

Real-time Stratum data workers использует:

ws://host:port/{safe-route}/api/ws
wss://host:port/{safe-route}/api/ws

Для HTTPS требуется wss://. Safe route строится так же, как для HTTP API.

Subscribe и heartbeat

Подпишитесь на worker group:

{
  "type": "subscribe",
  "group_id": "<worker gid>"
}

Frontend каждые 10 секунд отправляет heartbeat:

{
  "type": "ping"
}

Server может вернуть строку pong, { "type": "pong" } или pong внутри body.

Отмена подписки и закрытие:

{
  "type": "unsubscribe",
  "group_id": "<worker gid>"
}
{
  "type": "close"
}

Сообщения бывают строкой, JSON object или envelope { type, body }. ID worker может называться workerID, workerId, worker_id, sid или id.

Обработка HTTP ошибок

Ситуация Рекомендация
Нет HTTP response Network failure, restart или CORS; ограниченный retry с backoff.
401 / 403 Проверьте X-ACCESS-TOKEN и создайте новый Token с текущим Key.
404 Проверить поддержку endpoint текущей версией backend.
5xx Записать request ID, path и redacted error; не повторять бесконечно.
HTTP 200 + business failure Проверить PoolNode status, error и результат конкретной операции.

Изменение web port, safe route, TLS и сертификата может перезапустить service и оборвать запрос. Проверяйте результат через новый URL.

Определены, но не вызываются текущим frontend

Путь Состояние
/api/port/{id}/workers Старый список workers; сейчас используется /api/port/{id}/g/workers.
/api/sysinfo Старый endpoint; сейчас используется /api/sys/base/info.
/api/pump/t Getter pump timing, сейчас не используется.
/api/pump/t/{pump_t} Setter pump timing, сейчас не используется.
/api/poolnode/rewards p_get_fee_log — неиспользуемый alias; тот же путь используется списком rewards.

Нельзя определять HTTP method, permissions и response contract неиспользуемого пути только по frontend-константе. Эта версия документации не считает их стабильными, пока целевой экземпляр не подтвердит фактический ответ.

Совместимость

  • При запуске вызывайте /api/local/version и включайте optional features по версии.
  • Разбирайте новые поля permissively и не полагайтесь на порядок полей JSON.
  • GET, POST и DELETE на одном пути являются разными операциями.
  • Получайте enums валют, протоколов и статусов из /api/currency/config или текущих ответов.
  • Храните API Key, Access Token, Observer token и fleet API отдельно.

Совместимый parsing ответов

  1. Проверяйте HTTP status и Content-Type, но принимайте scalar JSON и plain text.
  2. Если object содержит status и data, разбирайте его как PoolNode envelope; при status !== 0 читайте error.
  3. Для обычной ошибки сначала читайте message, затем error, затем redacted raw body.
  4. Считайте [] успешным пустым списком.
  5. Сохраняйте null в charts и доверяйте возвращенным page, size, pages, total.
  6. Если переключение port, TLS, certificate или route оборвало запрос, сначала выполните read-only проверку по новому адресу.

Diagnostic logs могут хранить method, path template, HTTP status и business status, но должны удалять API, Observer и fleet tokens, wallets, certificate keys и полные revenue data.