From 06a5c1c208bdf7d281b2095ef41b12e70a40b543 Mon Sep 17 00:00:00 2001 From: MemRelay Date: Wed, 30 Sep 2026 04:28:59 +0800 Subject: [PATCH] =?UTF-8?q?create:=20NixMsg=20=E4=BE=9D=E8=B5=96=E5=BA=93?= =?UTF-8?q?=E8=A1=8C=E4=B8=BA=E6=A0=B8=E5=AF=B9=E7=BB=93=E8=AE=BA=EF=BC=88?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E5=BC=80=E5=8F=91=E6=88=90=E6=9E=9C=E6=97=B6?= =?UTF-8?q?=E7=94=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MemRelay-Operation: memory-save:nixmsg-20260930-0500-exp-libs MemRelay-Resource: 27e87e23-608c-4cae-8346-98e4fb300717 --- ... 依赖库行为核对结论(审核开发成果时用).md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 依赖库行为核对结论(审核开发成果时用).md diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 依赖库行为核对结论(审核开发成果时用).md b/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 依赖库行为核对结论(审核开发成果时用).md new file mode 100644 index 0000000..ae07472 --- /dev/null +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 依赖库行为核对结论(审核开发成果时用).md @@ -0,0 +1,29 @@ +--- +title: NixMsg 依赖库行为核对结论(审核开发成果时用) +type: experience +permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/nix-msg-依赖库行为核对结论审核开发成果时用 +stable_id: 27e87e23-608c-4cae-8346-98e4fb300717 +scope: project +memory_type: experience +project_id: 25464650-ed5d-440e-b362-190f2852d451 +usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 +status: active +revision: 1 +request_id: nixmsg-20260930-0500-exp-libs +created_at: '2026-09-29T20:28:55.863385+00:00' +updated_at: '2026-09-29T20:28:55.863385+00:00' +tags: +- nixmsg +- mochi-mqtt +- websocket +- review +--- + +2026-09-30 对照主分支源码核对,已写入 DEVELOPMENT.md 0.2,审核开发组代码时重点检查: +- mochi-mqtt/server v2:OnConnect 返回 error 时不回 CONNACK 直接断开;OnConnectAuthenticate 返回 false 一律回 0x86(用户名或密码错误),SDK 会停止重连,所以数据库故障等内部错误必须在 OnConnect 里返回 error。心跳可在 OnConnect 里改 cl.State.Keepalive 并设 cl.State.ServerKeepalive=true。OnPublish 返回 packets.CodeSuccessIgnore 时 QoS1 照样回 PUBACK 且不转发;ErrRejectPacket 不回 PUBACK。下行包超过客户端 CONNECT 声明的 Maximum Packet Size 时在 WriteLoop 里静默丢弃(只有 debug 日志);inflight 达到 MaximumInflight 时新的 QoS1 下行也静默丢弃;OnPublishDropped 只在发送队列满时触发。会话接管先发 0x8E 再换连接,旧连接的 OnDisconnect 可能晚于新连接建立。EstablishConnection 会阻塞到连接结束。ReadPacket 当前为每个包复制新切片。 +- coder/websocket:Accept 默认做同源校验,浏览器跨域会 403,库文档建议用 InsecureSkipVerify 而不是 OriginPatterns=*;客户端不带子协议时 Accept 不拒绝,要自己查 c.Subprotocol();NetConn 会把读限制设为不限,RemoteAddr 是 TCP 对端。 +- autopaho:CleanStartOnInitialConnection 只管首次连接,要用 ConnectPacketBuilder 每次设 Clean Start;ConnectTimeout 默认 10 秒。 +- Go crypto/tls:服务端设了 NextProtos 而客户端声明的 ALPN 没有交集时会拒绝握手(例如 ALPN=mqtt 的设备)。 +- modernc sqlite 支持 _pragma=name(value) 和 _txlock=deferred|immediate|exclusive。 +- gopkg.in/yaml.v3 已于 2025 年 4 月停止维护;YAML 官方的 go.yaml.in/yaml/v3 冻结只收安全修复,v4 在 2026-09 仍是 rc。 +- OWASP argon2id 最低配置:19 MiB、t=2、p=1(或 46 MiB、t=1)。 \ No newline at end of file