diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-29 22-51-28 UTC [2fdc51067a].md b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-29 22-51-28 UTC [2fdc51067a].md new file mode 100644 index 0000000..fa81c2f --- /dev/null +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-29 22-51-28 UTC [2fdc51067a].md @@ -0,0 +1,59 @@ +--- +title: Checkpoint 2026-09-29 22:51:28 UTC [2fdc51067a] +type: checkpoint +permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-29-22-51-28-utc-2fdc51067a +stable_id: 27de0ed5-9250-4b4c-8a65-bbca569181ac +scope: project +memory_type: checkpoint +project_id: 25464650-ed5d-440e-b362-190f2852d451 +usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 +status: active +revision: 1 +request_id: n-connect-n1n2-20260930-ready +created_at: '2026-09-29T22:51:28.201592+00:00' +updated_at: '2026-09-29T22:51:28.201592+00:00' +tags: +- ready-to-merge +- line-N +- n1 +- n2 +- feat/n-connect +--- + +# 检查点:连接 N · N1+N2 ready-to-merge + +## 完成内容 +- N1 `internal/listener`:首字节识别(放回)、10s 超时、TLS(无 NextProtos)、证书按 mtime 每小时重载、admin 分离与 404、通道 Listener、路由骨架、受信任代理 XFF、端口 0 写 listen.addr/admin.addr。 +- N2 `internal/broker`:mochi InlineClient 装配约束、coder/websocket `/mqtt`、连接随机代号、心跳校正、Authenticator 接口(默认拒绝)、每端串行上行队列 256、下行大小检查与大帧名额、QoS 选择由 PublishOpts。 +- 未改 `cmd/nixmsg`、未改 `internal/protocol` 帧定义、未做 N3。 + +## 分支 / 路径 +- 分支:`feat/n-connect`(已推送 origin,未推 main,未强推) +- 工作树:`E:\code\NixMsg-wt\n` +- tip:`151707ba093b8d4bab6dc24414a556c4bd8a9bfb` +- 基于:`origin/main` @ `22c56d1` +- 提交: + 1. `6e5179f` feat: 实现端口识别、TLS 证书重载与路由骨架 + 2. `151707b` feat: 实现 WebSocket、mochi broker 与下行发布 + +## 验证 +- 工作树内 `task check` 通过(web build、embeddist、golangci-lint 0、go test 含 listener/broker)。 + +## 总控合并时要接的入口 +1. `listener.New(Options{Listen, AdminListen, DataDir, CertFile, KeyFile, AllowPlaintext, TrustedProxies, ClientHandler, AdminHandler, OnMQTT})` → `Start`/`Close`;`OnMQTT` 调 `broker.AttachTCP`。 +2. `listener.NewMux(RoleClient|RoleAdmin|RoleShared, Handlers{MQTT: broker.WSHandler(proxies), ...})`。 +3. `broker.New(Options{Authenticator, Uplink})`;`wire` 里 `Downlink`/`Conns` 用 `*broker.Broker`。 +4. N3 前 Authenticator 用 Reject 或临时 Allow;N3 替换真实登录。 + +## DEVIATIONS +- `docs/DEVIATIONS.md`「连接 N」五条(未接线 cmd、addr 仅 port0、默认拒绝登录、大帧释放、OnPublishDropped 仅日志)。 + +## 没做完 +- N3 登录/会话令牌/握手/顶号/30s 握手超时。 +- cmd/nixmsg 接线。 +- OnPublishDropped → M 线清推送标记。 +- 大帧确认超时释放(依赖 M)。 + +## 给下个会话 +- 可 ff-merge `feat/n-connect`;勿改主工作区并行开发;勿强推 main。 +- 主工作区若有无关 `?? 2.0` 勿动。 \ No newline at end of file