Files
MemRelay/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 依赖库行为核对结论(审核开发成果时用).md
T
memrelay 06a5c1c208 create: NixMsg 依赖库行为核对结论(审核开发成果时用)
MemRelay-Operation: memory-save:nixmsg-20260930-0500-exp-libs
MemRelay-Resource: 27e87e23-608c-4cae-8346-98e4fb300717
2026-09-30 04:28:59 +08:00

29 lines
2.5 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: 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)。