--- title: Checkpoint 2026-09-29 15:44:11 UTC [6720a64a9c] type: checkpoint permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-29-15-44-11-utc-6720a64a9c stable_id: 890af45e-b976-40a1-964d-a388cfc1b89f 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: nixmsg-ckpt-20260929-1544 created_at: '2026-09-29T15:44:11.561647+00:00' updated_at: '2026-09-29T15:44:11.561647+00:00' tags: - nixmsg - design --- 完成:记录 NixMsg 产品需求(设备互发、在线列表、单设备在线查询、单端口按 tag 通讯、设备密码、跨语言 SDK)。仓库 e:\\code\\NixMsg 为空目录,尚未 git init。 原因:用户要求技术选型建议,并询问 MQTT 能否减少开发与维护。 建议(未经用户确认,不得当作已裁定决定):数据面用 Mosquitto(MQTT over WebSocket),管理面用很薄的 FastAPI 做设备注册、密码和在线查询;对外用反向代理合并为一个端口;SDK 包装官方 MQTT 客户端,对外只暴露 connect/publish/subscribe/send/isOnline。EMQX 仅在需要现成控制台或上万连接时再考虑。若只有少量服务进程且以请求-响应为主、不需要离线补发,自研 Go WebSocket Hub 更轻。 验证:未写代码,无可运行验证。 下一步:等用户确认数据面方案后再搭骨架。确认前需要知道:是否有资源很小的嵌入式设备;对方不在线时消息要不要先存着补发。 给下个会话:项目 ID 25464650-ed5d-440e-b362-190f2852d451,目录 e:\\code\\NixMsg,需求记忆 9cea62eb-5435-4fb1-af51-9699bb182b1a。不要把未确认的 MQTT 建议写成已裁定决定。不要为假设规模引入 EMQX 集群或规则引擎。