MemRelay-Operation: memory-save:nixmsg-20260930-0500-exp-libs MemRelay-Resource: 27e87e23-608c-4cae-8346-98e4fb300717
29 lines
2.5 KiB
Markdown
29 lines
2.5 KiB
Markdown
---
|
||
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)。 |