fix: 按 K-00 约定修复 Java SDK 断线重交与退避

This commit is contained in:
Nixevol
2026-09-30 16:24:13 +08:00
parent 537cef0e32
commit c6b7b6e798
12 changed files with 1178 additions and 335 deletions
+9
View File
@@ -1189,6 +1189,15 @@
- 备选方案:照搬旧 JS 双重翻倍;否决。
- 影响:仅 sdk/python。
### 复审修复 K-04
- 日期:2026-09-30
- 原条款:issue #61 及第二轮补充;DEVELOPMENT 第 9 节附录。
- 实际做法:CONNACK 只按 MQTT 5 原因码判定认证失败,不再用异常文本把 `connack`/`connectionfailed` 当成坏密码;心跳 30;0x8B 可重试、0x8E 为 `taken_over`;ReconnectBackoff 单计数 n;断线后在途发送新 rid 重交;`rate_limited` 按该条计数退避且新 rid;回调经单一队列、不持 `lock`;logout 把请求失败返回应用;本地队列满 `queue_full`;`sendAt`/`delay` 互斥并用 64 位时长;URL 映射 http→ws、路径非空不追加 `/mqtt`;`java.util.Base64` 换成 API 24 可用的 `NixBase64`;`FakeTransport` 移到测试源码,LICENSE 打进 jar 的 `META-INF`。未发布 Maven。无独立取消未发出条目的 API,`close` 以 `closed` 结束队列(`testK00CancelUnsent`)。
- 原因:与 K-00 对齐并修 S-02 文本误判认证失败、断线永不重交、回调持锁。
- 备选方案:沿用异常文本回退与 JS 双重翻倍;否决。
- 影响:仅 sdk/java。
## SDK 二 S2
### S2-PY/JAVA 1–3 2026-09-30