Документация
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 отдельно.
