文档
WebSocket、错误处理与兼容性
RustMinerSystem 实时 Stratum WebSocket 协议、订阅消息、错误状态、兼容性和未使用接口说明。
WebSocket、错误处理与兼容性
WebSocket 地址
实时矿工 Stratum 数据使用:
ws://主机:端口/{安全路径}/api/ws
wss://主机:端口/{安全路径}/api/ws
HTTPS 页面必须使用 wss://。安全路径的拼接规则与 HTTP API 相同。
订阅和心跳
订阅矿工组:
{
"type": "subscribe",
"group_id": "<矿工 gid>"
}
前端每 10 秒发送一次心跳:
{
"type": "ping"
}
服务端可以返回字符串 pong、{ "type": "pong" },或在 body 中包含 pong。
取消订阅和关闭:
{
"type": "unsubscribe",
"group_id": "<矿工 gid>"
}
{
"type": "close"
}
消息可能是字符串、JSON 对象,或 { type, body } 包装结构。矿工标识可能位于 workerID、workerId、worker_id、sid 或 id。
HTTP 错误处理
调用端至少应处理:
| 情况 | 建议 |
|---|---|
| 无 HTTP 响应 | 视为网络中断、服务重启或跨域失败;使用有限次数退避重试。 |
401 / 403 |
检查 X-ACCESS-TOKEN,并用当前 Key 重新生成 Token。 |
404 |
检查后端版本是否支持该接口。 |
5xx |
记录请求 ID、路径和脱敏错误,不要无限重试。 |
| HTTP 200 + 业务失败 | 检查 PoolNode status、error 和操作特定返回值。 |
修改 Web 端口、安全路径、TLS 或证书时,服务重启可能让当前请求没有响应。此类接口需要结合新地址是否可访问判断最终状态。
当前前端定义但未调用
| 路径 | 状态 |
|---|---|
/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 方法、权限和响应结构,因此本版文档不把它们列为稳定接口。只有在目标实例的实际响应确认后再使用。
版本兼容建议
- 启动时先调用
/api/local/version,按版本启用可选功能。 - 对新增响应字段保持宽松解析,不依赖字段顺序。
- 不要把 GET、POST、DELETE 相同路径视为同一操作。
- 币种、协议和状态枚举应从
/api/currency/config或当前响应读取。 - API Key、Access Token、观察者 TOKEN 和群控 API 应分别管理。
响应兼容处理
建议按以下顺序解析 HTTP 响应:
- 先检查 HTTP 状态和
Content-Type,但允许标量 JSON 和纯文本。 - 若对象同时含
status和data,按 PoolNode 包装处理;status !== 0时读取error。 - 普通对象错误优先读取
message,其次error,最后保留脱敏后的原始文本。 - 数组接口在无数据时应接受
[];不能把空数组当作请求失败。 - 图表数值和时间点允许为
null;分页接口以响应的page、size、pages、total为准。 - 写操作若因端口、TLS、证书或路径切换而无响应,先以新地址执行只读验证,不要立即重复提交。
客户端应保存请求方法、路径模板、HTTP 状态和业务状态用于诊断,但不得记录 Access Token、观察者 TOKEN、群控 TOKEN、钱包、证书私钥或完整收益数据。
