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.

Login и subscribe

Ниже показан внутренний WebSocket handshake текущего frontend. Это не предварительный login для внешнего API; передача login-free credential через WebSocket еще требует реализации backend.

{
  "type": "login",
  "key": "<текущий внутренний WebSocket session credential>"
}

Затем подпишитесь на 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 Очистить просроченную сессию и войти снова.
423 Текущий UI требует TOTP; поведение login-free внешнего API еще не определено.
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/_/captcha Константа sliding captcha есть, но call site отсутствует.
/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-константе. Перед публикацией проверьте Rust backend routes.

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

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