Expand description
v2 帧协议:消息类型、帧编解码与载荷表示。
架构位置:前端 -> Tauri 命令 -> Bridge -> Writer/FrameCodec -> Python 进程。
本模块只描述线上格式,不涉及调用状态。Python 端对应 tauri_runtime.protocol 中的 pydantic
模型,两端以 python-sdk/tests/fixtures/golden_frames.json 逐字节对齐。
线上格式:[u32 BE 内层长度][u32 BE 头长度][头 JSON][body]。
- 外层长度只计其后的字节,上限为
max_frame_size(默认DEFAULT_MAX_FRAME_SIZE); - 头是以
type字段区分的 JSON 对象(见Message),未知字段被忽略; - JSON 载荷内联在头的
value字段,二进制载荷放在 body 并在头中标记raw: true; 未设置raw时 body 必须为空(见Inline::join)。
不变量:头无法解码的帧只影响该帧本身,可以跳过;超限帧意味着对端异常,按致命错误处理
(见 FrameCodec)。
Structs§
- AppInfo
ready消息中携带的宿主应用信息,取自 Tauri 的PackageInfo。- Frame
- 一个完整的协议帧:消息头加上可选的二进制 body。
- Frame
Codec - 基于
length_codec的帧解码器,用于读取 Python 的 stdout。 - Inline
- 消息头中的载荷字段:JSON 载荷内联为
value,二进制载荷放在帧 body 中并以raw: true标记。
Enums§
- Message
- 帧头,即以
type字段区分的 JSON 对象。 - Payload
- 与线上表示无关的载荷值。
- Protocol
Error - 帧编解码过程中的错误。
Constants§
- DEFAULT_
MAX_ FRAME_ SIZE - 默认的单帧大小上限(64 MiB),按外层长度前缀之后的字节数计算。
- PROTOCOL_
VERSION - 当前协议版本,握手时
hello.protocol必须与之相等,否则启动失败并返回protocol_mismatch。
Functions§
- length_
codec - 外层分帧编解码器:u32 大端长度前缀,帧长上限为
max_frame_size。