P2P 消息系统 (p2p)
Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。适用于服务器、CI/CD、容器化等无桌面环境。
核心特性
- 🌐 P2P 通信: 点对点消息收发,无中心服务器
- 📱 设备配对: 6 位配对码安全配对设备
- 📬 消息收件箱: 支持未读过滤和分页查看
- 🔗 桌面桥接: 通过 HTTP 连接桌面应用信令服务
系统架构
p2p 命令 → p2p.js (Commander) → p2p-manager.js
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
Peer 管理 消息收发 设备配对
│ │ │
▼ ▼ ▼
p2p_peers 表 p2p_messages 表 p2p_paired_devices 表
│
▼
P2PBridge (HTTP → 桌面 9001)概述
CLI Phase 5 — P2P 点对点消息和设备配对。
命令概览
bash
chainlesschain p2p status # P2P 网络状态
chainlesschain p2p peers # 列出已知 peer
chainlesschain p2p send <peer> "msg" # 发送消息
chainlesschain p2p inbox # 查看收件箱
chainlesschain p2p pair <device-name> # 配对设备
chainlesschain p2p devices # 列出已配对设备
chainlesschain p2p unpair <device-id> # 解除配对功能说明
Peer 管理
registerPeer— 注册新 peer(peer_id, 显示名, DID, 公钥, 设备类型)getAllPeers/getOnlinePeers— 查询 peer 列表updatePeerStatus— 更新 peer 在线状态
消息收发
sendMessage— 发送文本消息,支持加密标记getInbox— 获取收件箱(支持仅未读过滤、分页)markMessageRead— 标记消息已读getMessageCount— 统计总消息/未读消息数
设备配对
pairDevice— 生成 6 位配对码confirmPairing— 验证配对码确认配对getPairedDevices/unpairDevice— 设备管理
桌面桥接 (P2PBridge)
P2PBridge 类通过 HTTP 连接到桌面应用(默认 localhost:9001),支持:
checkBridge()— 健康检查(5s 超时)getStatus()— 获取桥接状态
数据库表
| 表名 | 说明 |
|---|---|
p2p_peers | peer 注册信息 |
p2p_messages | 消息存储 |
p2p_paired_devices | 已配对设备 |
安全考虑
- 消息支持加密标记,结合 DID 身份验证
- 配对码为 6 位随机数,有效期有限
- 私钥和公钥绑定 peer 身份,防伪造
故障排查
| 问题 | 解决方案 |
|---|---|
status 显示离线 | 确认桌面应用已启动且信令端口 9001 可达 |
send 失败 | 确认目标 peer 已注册且在线 |
pair 超时 | 确认两端网络连通,重新生成配对码 |
关键文件
packages/cli/src/commands/p2p.js— 命令实现packages/cli/src/lib/p2p-manager.js— P2P 管理库
相关文档
依赖
- 纯 Node.js crypto(无外部依赖)
- 桌面桥接通过 HTTP fetch
