
【免费下载链接】happierWeb, Desktop Mobile client and orchestrator for Codex, Claude Code, OpenCode, Pi, Cursor, Grok, Antigravity, Kimi, Augment Code, Qwen, fully end-to-end encrypted项目地址https://gitcode.com/gh_mirrors/hap/happier点击查看免费下载Happier 是一个面向 Codex、Claude Code、OpenCode、Pi 等多款 AI 编程助手的Web / 桌面 / 移动端客户端与编排器其多端实时同步能力完全建立在WebSocket 与 Socket.IO 通信协议之上。本文将从传输层、握手鉴权、事件模型到客户端重连带你 5 分钟看懂这套端到端加密的实时同步协议是如何运转的 一、为什么是 HTTP Socket.IO 双通道Happier 的协议设计刻意保持极简设计动机详见 docs/protocol.md通道用途特点HTTPJSON读取数据、执行操作走/v1、/v2路由简单可靠Socket.IO实时同步推送挂载在/v1/updates路径支持websocket与polling双传输这样组合的好处很直接WebSocket 负责推新消息、会话状态、设备上线等事件毫秒级到达Polling 作为兜底当网络环境不支持 WebSocket 时自动降级为 HTTP 长轮询保证弱网也能同步读写分离客户端断线重连后先用 HTTP 补齐历史数据再由 WebSocket 接续增量更新天然抗网络抖动。服务端在 apps/server/sources/app/api/socket.ts 中创建 Socket.IO 实例关键配置包括pingInterval: 1500015 秒心跳与pingTimeout: 45000用于及时发现并清理假死连接。二、握手鉴权三种连接作用域客户端连接时会在 Socket.IO 握手的auth字段中携带token与clientType服务端据此决定这条连接能收到什么连接类型场景收到的事件user-scopedWeb / 桌面 / 手机 App整个账号的全局更新session-scoped单个会话的发布端仅该会话的更新machine-scoped后台守护进程Daemon机器级更新并发布机器状态几个值得注意的细节无 Cookie 鉴权认证完全依赖握手中的 tokenCORS 设置credentials: false适合浏览器跨域场景见 apps/ui/sources/sync/api/session/connection/createSyncSocketTransport.ts机器独占机制同一台机器只允许一个 Daemon 连接第二个连接会被409 machine-owner-conflict拒绝避免双 Daemon状态混乱端到端加密不变形协议层把大部分载荷当作不透明的加密字符串处理服务端永远看不到明文加密边界见 docs/encryption.md。三、事件模型update与ephemeral的持久/瞬时分界这是整套协议最精妙的设计——按断线后是否需要恢复把事件分成两类1.update持久化同步事件携带全局递增的seq序列号客户端只需按序应用即可保证状态一致。核心事件包括new-session/update-session/delete-session—— 会话生命周期new-message—— 新消息加密内容new-machine/update-machine—— 设备状态new-artifact/update-artifact—— 工作区产物kv-batch-update—— 键值对批量同步2.ephemeral瞬态事件只关心此刻不落库、不参与重放activity/machine-activity—— 会话或设备是否正在思考usage—— token 用量与费用machine-status—— 设备在线状态手机 App 上的在线/离线小圆点就靠它 3. 乐观并发控制所有带版本的字段元数据、Agent 状态、产物内容等都要求客户端携带expectedVersion。若与服务端不一致服务端返回version-mismatch并附上最新值由客户端自行决策——冲突处理完全掌握在用户数据一侧而非服务端静默覆盖。事件路由的核心实现位于 apps/server/sources/app/events/connectionEventRouter.ts客户端→服务端的事件清单message、session-alive、rpc-call等完整列表见 docs/protocol.md。四、客户端侧连接监督与自动重连客户端并没有裸连WebSocket而是把 Socket.IO 连接包装成一个受监督的传输层connection-supervisor 负责生命周期统一处理 connect / disconnect / error并内置指数退避重连策略packages/connection-supervisor/src/reconnectBackoff.ts显式管理连接池UI 端创建 socket 时关闭 Socket.IO 全局缓存forceNew: true、multiplex: false避免旧监听器跨重建泄漏重连后自动补差重连成功 → HTTP 拉取缺失的seq区间 → WebSocket 继续接收增量整个过程对用户透明。五、多实例扩展Redis 适配器单机部署时事件通过进程内内存路由广播当服务横向扩展为多副本后Happier 通过socket.io/redis-streams-adapter把房间room状态同步到 Redis Streams任意副本上的 worker 都能把事件扇出到 API 副本持有的连接启动逻辑见 apps/server/sources/startServer.ts。这也是手机收到推送时电脑可能连着另一台服务器仍能工作的底层原因。六、延伸阅读 想深入源码或协议的读者可以从这些入口继续探索协议总览docs/protocol.mdHTTP API 全貌与鉴权流程docs/api.md端到端加密边界docs/encryption.md兼容性与版本演进策略docs/compatibility.md服务端 Socket.IO 配置apps/server/sources/app/api/socket.ts客户端同步传输层apps/ui/sources/sync/api/session/connection/createSyncSocketTransport.ts一句话总结Happier 用 HTTP 拉 Socket.IO 推、持久 update 瞬态 ephemeral、seq 排序 版本防冲突 三板斧在端到端加密的前提下让 Web、桌面、手机三端对同一批 AI 会话的视图始终保持一致——这就是它实时同步协议的全部骨架。赞分享【免费下载链接】happierWeb, Desktop Mobile client and orchestrator for Codex, Claude Code, OpenCode, Pi, Cursor, Grok, Antigravity, Kimi, Augment Code, Qwen, fully end-to-end encrypted项目地址https://gitcode.com/gh_mirrors/hap/happier点击查看免费下载相关推荐G-Helper终极指南如何用免费开源工具彻底解决华硕笔记本性能管理难题G Helper终极指南如何用免费开源工具彻底解决华硕笔记本性能管理难题 你是否厌倦了华硕Armoury Crate的臃肿卡顿是否想要一个轻量级却能全面控制桌面应用系统编程微信聊天数据永久保存指南如何让珍贵对话不再消失微信聊天数据永久保存指南如何让珍贵对话不再消失 你是否曾因为手机丢失、系统升级或误操作而丢失重要的微信聊天记录那些与家人的温馨对话、与朋友的珍贵回忆、与同事如何利用Super Productivity实现实时数据同步WebSocket技术解析与应用指南如何利用Super Productivity实现实时数据同步WebSocket技术解析与应用指南 Super Productivity是一款集成了时间盒管理和前端桌面应用移动开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考