create: Checkpoint 2026-09-29 22:51:28 UTC [2fdc51067a]

MemRelay-Operation: checkpoint-save:n-connect-n1n2-20260930-ready
MemRelay-Resource: 27de0ed5-9250-4b4c-8a65-bbca569181ac
This commit is contained in:
2026-09-30 06:51:38 +08:00
parent b538ee30d1
commit d34ebb5623
@@ -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` 勿动。