docs: 写入 K-00 SDK 行为约定附录

This commit is contained in:
Nixevol
2026-09-30 16:24:13 +08:00
parent 8f47167128
commit 3749b9bdf1
6 changed files with 90 additions and 2 deletions
+12
View File
@@ -39,6 +39,18 @@ res, err := nixmsg.Register(ctx, "ws://127.0.0.1:7443/mqtt", "reg-code",
nixmsg.RegisterOptions{ID: "device-1", LoginPassword: "secret", Name: "门口"})
```
## 行为约定
四种 SDK 同一套对外语义,详见仓库 `docs/DEVELOPMENT.md` 第 9 节附录「SDK 行为约定」。要点:
- 首次连接默认 30 秒内未握手则停止重连,返回 `not_connected`;Client 可再次 `Connect`。
- 顶号原因一律 `taken_over`;DISCONNECT `0x8B` 可重试;CONNECT 不带 Receive Maximum;心跳默认 30 秒。
- 重连退避只维护一个计数 n:第 n 次等待 `min(1s×2^(n-1), 30s)×随机(0.7,1.3)`。仅 `Connect` 后第一次可不等待;断线后首次重连也约 1 秒;在线不足 60 秒断开则 n+1,稳定 60 秒后断开 n=1。
- `rate_limited` 与断线重交:每次重新生成 `rid` 并重新序列化;消息 `id`、正文、`send_at_ms` 不变。
- `Logout` 请求失败返回给应用;本地仍停止重连、清空令牌、结束队列并发 `offline`。
- 时长与时间戳用 64 位整数。`sendAt` 与 `delay` 同时给时本地 `bad_request`。停止重连后再 `Send` 立即失败。
- 取消尚未发出的条目即出队;已发出的返回 `result_unknown`,应用应以同一消息号重试。
## 许可证
见 `LICENSE`(专有)。