五 Tab、会话、乐观消息与本地缓存;realtime v2 客户端收口待完成
ARCHITECTURE DOSSIER · 04
实时通信与端侧状态
HTTP 会话、WebSocket、消息持久化、Push 与媒体发送
REALTIMECODE + RUNTIME + QAHTTP/WS 升级、TLS 与连接限制
405 个注册 HandleFunc、消息/成员/回执与 /websock/open runtime
准备、hash、分片、上传与失败恢复
离线通知与设备路由
durable truth、presence/cache、event bus
CRITICAL SEQUENCE
真实主链与事务边界
每一步都必须能回到调用方、契约、状态 owner 与失败证据;UI 只显示服务端已经确认的真值。
- 01
客户端用安全会话调用 HTTP API
→ - 02
目标协议用 Authorization header、device_id 与 since_event_id 升级 /websock/open
→ - 03
服务端重放缺口并发送 replay_complete
→ - 04
本地生成 client_message_id 与 optimistic bubble
→ - 05
服务端事务写入消息并发布事件
→ - 06
客户端仅推进连续游标、持久 ACK;遇 gap 回到 HTTP 补洞
→ - 07
离线设备通过 Push 唤醒并拉取缺口
INTERFACE REGISTER
跨项目接口与安全条件
producer、consumer、契约和 guard 同时登记;其中任何一列缺失都不能进入多团队并行开发。
SendMessage {client_id,conversation,payload}im-coremember + capability + idempotency
RealtimeEnvelope / replay_complete / AckFrameiOS clientsheader bearer + device cursor + conversation scope
PreparedMedia {hash,mime,size,chunks}media adapterupload ticket + checksum
STATE OWNERSHIP
数据真值与恢复
STOREPostgreSQL
RETENTION产品与隐私策略
RECOVERY≤15m RPO target
STORERedis
RETENTION短期
RECOVERY从 durable truth 重建
STORERedis + PostgreSQL truth
RETENTION受控重放窗口
RECOVERYdevice cursor + HTTP gap fill
STORENATS
RETENTION按 consumer policy
RECOVERYconsumer sequence
FAILURE MODEL
故障必须怎样收敛
SYMPTOM气泡 pending 或顺序跳变
CONTAINsequence gap 拉取 + 幂等对账
client/server idsSYMPTOM文本成功、附件失败
CONTAIN保留草稿与分片重试
send-kit phaseSYMPTOM离线提醒缺失
CONTAIN回到前台按 cursor 补拉
push receipt + replay lagQA RELEASE GATES
不是画完架构图就算完成
这些门禁连接 UI 状态、接口负向路径、运行证据与可恢复性;发布证据必须绑定 exact commit。
断网、重连、乱序、重放
端到端故障注入
非成员不能读写会话
API negative suite
媒体失败可恢复
send-kit acceptance
设备撤销后 WS 失效
security regression
URL 无 bearer、device cursor 与 ACK 持久化
realtime v2 contract + log redaction