Files
MemRelay/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-29 22-51-28 UTC [2fdc51067a].md
T
memrelay d34ebb5623 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
2026-09-30 06:51:38 +08:00

59 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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` 勿动。