Skip to content

术语表 ​

本页列出手册与协议规范里反复出现的术语,每个一句话;前八个取自规范第 1 节。

身份与会话 ​

术语含义
宿主接入 Talkwire 的业务系统,负责账号、好友关系、资料、推送通道和媒体存储
appUserId宿主侧的用户 id,任意字符串,Talkwire 不解释;契约里也叫宿主用户 id
uidTalkwire 侧的用户 id,"uid_" 加 SHA-256(appUserId) 前 8 字节的 base64url,共 15 个字符
topic会话,分单聊、群、保留 topic 三种
规范 topic服务端存储会话用的名字:单聊是 p2p_…,群是 grp_…
保留 topicme、fnd 与只用于在线状态查询的 *
seq消息在 topic 内的序号,从 1 开始,严格递增,不复用
连接一条 WebSocket 连接
订阅连接与 topic 的关联;服务端只把推送发给已订阅该 topic 的连接,断线即失效
设备名(device)客户端登录时带的、本机持久保存的名字;同名设备才互相顶替,不同设备可以同时在线

令牌 ​

术语含义
用户令牌(访问令牌)宿主签发给客户端、用来登录 IM 的 JWT:sub 是宿主用户 id,type 为 access,role 在 TALKWIRE_TOKEN_USER_ROLES 里
内部令牌IM 服务端与宿主互相调用时用的 HS256 JWT,claims 为 role: internal_service、60 秒后过期,密钥是共享的 JWT_SECRET
JWKS宿主公布的公钥集合;设了 TALKWIRE_JWKS_URL 时服务端用它验 RS256、ES256 用户令牌

协议 ​

术语含义
原版、参考服务Talkwire 从中提炼出来的小桃子 IM 服务;legacy 档与它逐帧一致,一致性测试以它为参照
legacy 档对外的帧与原版逐帧一致、连同已知缺陷的协议档位,迁移原版部署时用
strict 档修正已知缺陷并加上新增字段与动作的协议档位,服务端默认用它
action 帧、type 帧线协议的两族帧,分别以 action、type 字段区分;客户端先看 type
errCodestrict 档错误帧里稳定的小写下划线错误代码,客户端按它判断失败原因,不解析 reason 的文字
capability(能力)strict 档登录应答 capabilities 里的一项,如 multi-device、sync-summary、module:call、push:fcm
clientMsgId客户端为每条消息生成的唯一 id;同一 topic 下重复发送只存一条
清空水位clearVersion 与 clearBeforeSeq:会话被清空的次数与清到的 seq,客户端据此删本地消息
已读位置某人在会话里已读到的 seq(含);strict 档 get 应答里本人的那一项叫 readSeq
连续段本地已有、中间没有空缺的 seq 范围;已撤回的 seq 和清空水位以下都算在内,补拉从段尾开始
撤回墓碑客户端在本地替被撤回的消息留下的一条记录,只有发送人与时间,不发给服务端
sync_summarystrict 档的会话变更摘要:一次往返列出全部会话的变化,客户端只对有变化的会话 get
补投服务端在下次登录时补发设备离线期间排队的清空、群事件与加密密文,前两种要回执
custom_update宿主经内部接口 custom-broadcast 推给在线连接的卡片状态更新,不进离线队列
已知缺陷(D 编号)规范第 18 节列出的原版协议缺陷 D1–D9,strict 档修正除 D6 外的全部各项
F 编号协议事实的逐条出处,见 protocol-findings.md

扩展 ​

术语含义
模块可以单独装上、单独拿掉的能力:通话 call、扫码入群 groupjoin、群机器人 groupai、端到端加密 e2ee
standalone 宿主不需要宿主进程的运行方式(TALKWIRE_HOST_MODE=standalone),好友、资料、运行配置来自一个文件
运行配置宿主经 runtime-config 下发的群人数上限、消息长度、推送文案等,服务端每 60 秒刷新一次
宿主接口契约IM 服务端与宿主之间的两份 OpenAPI 3.1:宿主实现的 host.openapi.yaml 与 IM 暴露的 im-internal.openapi.yaml
ImUiHost客户端界面套件向宿主要联系人、资料和媒体地址的接口,Android 与 Web 同名
自定义消息类型宿主自己的 contentType 与 extra(红包、订单卡片),客户端在消息类型注册表里注册,不进 SDK

测试 ​

术语含义
黄金对话用真实 WebSocket 录下、归一化后的逐帧对话,主要对原版服务录制;用来比对服务端实现,也用来回放测客户端
一致性测试台tools/conformance:用真实 WebSocket 驱动服务端,与黄金对话逐帧比较
回放服务器按一份黄金对话扮演服务端、测客户端 SDK 的工具,可注入断线、延迟、重复、丢帧
红线必须守住的行为,服务端与宿主 R1–R22、客户端 C1–C10;每条都对应计划中的测试用例,能录到的还有黄金对话

核心以 Apache-2.0 发布;端到端加密模块为 AGPLv3。