Skip to content

协议概览

英文翻译待补,当前显示简体中文。 / English translation pending — showing Simplified Chinese.

真遇的客户端与服务端共享同一份协议定义:以 Protobuf 描述、语言中立。它的设计目标是「两端不一起发版也能共存」,并在未来服务端公开发布后,成为第三方实现的参考。

分层

协议按关注点分层,每层是一组 message 与枚举:

层 作用
控制 版本握手与能力协商
身份 密钥对即身份;公钥分发
服务器 服务器信息、配置与寻址
活动 活动的创建、状态与报名
通信 公告与讨论区(内容为端到端密文)
内容 媒体与回顾内容
连接 好友与共同在场
注册处 账号 / 资料 / 找回,以及公开组目录
迁移 数据导出与迁移

端到端加密的内容一律以不透明的 bytes 表示,协议层不定义明文语义;服务器无从解读。

传输

  • 主体:RPC over HTTP(S)。请求体为 Protobuf,Content-Type: application/protobuf;以 POST /rpc/{Method} 调用。
  • 推送:WebSocket 通道。用于服务端主动推送,不承载实时聊天(产品刻意压低实时性)。
  • 认证:请求级签名自证。对 nonce‖timestamp‖请求体 用 ed25519 签名,随请求头携带公钥与签名;无 token、无会话。详见故障排查。

兼容性铁律

  • 字段只增不改:修改字段类型或名称、删除字段都属破坏性变更。
  • 字段号不复用:删除字段时用 reserved 声明,禁止回收旧号。
  • 枚举只追加:不删除、不重排已有枚举值;零值固定为 *_UNSPECIFIED。
  • 破坏性改动开新版本:确需重构时启用新包版本,旧版本保持不变,由版本握手协商,实现新旧共存。
  • 能力协商:可选能力以位图声明,旧端忽略未知位。

第三方实现

正式的协议参考文档与 schema 将随服务端公开发布一并提供。届时第三方可在不复制、不重定义协议结构的前提下实现兼容的服务端或客户端。

相关