RustMinerSystem

文档

WebSocket、错误处理与兼容性

RustMinerSystem 实时 Stratum WebSocket 协议、订阅消息、错误状态、兼容性和未使用接口说明。

WebSocket、错误处理与兼容性

WebSocket 地址

实时矿工 Stratum 数据使用:

ws://主机:端口/{安全路径}/api/ws
wss://主机:端口/{安全路径}/api/ws

HTTPS 页面必须使用 wss://。安全路径的拼接规则与 HTTP API 相同。

登录和订阅

以下是新版后台前端当前使用的内部 WebSocket 握手帧。它不是外部 API 的登录前置流程;外部 WebSocket 如何使用免登录 API 凭据仍待后端实现。

{
  "type": "login",
  "key": "<当前内部 WebSocket 会话凭据>"
}

然后订阅矿工组:

{
  "type": "subscribe",
  "group_id": "<矿工 gid>"
}

前端每 10 秒发送一次心跳:

{
  "type": "ping"
}

服务端可以返回字符串 pong{ "type": "pong" },或在 body 中包含 pong。

取消订阅和关闭:

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

消息可能是字符串、JSON 对象,或 { type, body } 包装结构。矿工标识可能位于 workerIDworkerIdworker_idsidid

HTTP 错误处理

调用端至少应处理:

情况 建议
无 HTTP 响应 视为网络中断、服务重启或跨域失败;使用有限次数退避重试。
401 / 403 清除失效会话并重新登录。
423 当前后台 UI 要求 TOTP;外部免登录 API 的错误行为待确认。
404 检查后端版本是否支持该接口。
5xx 记录请求 ID、路径和脱敏错误,不要无限重试。
HTTP 200 + 业务失败 检查 PoolNode statuserror 和操作特定返回值。

修改 Web 端口、安全路径、TLS 或证书时,服务重启可能让当前请求没有响应。此类接口需要结合新地址是否可访问判断最终状态。

当前前端定义但未调用

路径 状态
/api/_/captcha 定义了滑动验证码常量,但新版前端没有调用点。
/api/port/{id}/workers 旧矿工列表路径;当前使用 /api/port/{id}/g/workers
/api/sysinfo 旧系统信息路径;当前使用 /api/sys/base/info
/api/pump/t 抽水时间读取常量,当前未调用。
/api/pump/t/{pump_t} 抽水时间设置常量,当前未调用。
/api/poolnode/rewards p_get_fee_log 是未使用别名,但相同路径由收益记录接口实际调用。

这些接口不能仅凭前端常量判断 HTTP 方法、权限和响应结构。正式开放前应从 Rust 后端路由再次核对。

版本兼容建议

  • 启动时先调用 /api/local/version,按版本启用可选功能。
  • 对新增响应字段保持宽松解析,不依赖字段顺序。
  • 不要把 GET、POST、DELETE 相同路径视为同一操作。
  • 币种、协议和状态枚举应从 /api/currency/config 或当前响应读取。
  • 通用 API 凭据、观察者 TOKEN 和群控 API 应分别管理。