Request
客户端开过来的请求车:{ type: "req", id, method, params }。
Concepts 导读
所有 WS 消息(请求/响应/事件)的 schema 都定义在 TypeBox 里,驱动运行时校验、JSON Schema 导出和 Swift 代码生成。先看 `src/gateway/protocol/schema.ts`,再跑 `pnpm protocol:gen` 生成产物。注意:feature discovery 列表不是自动扫出来的,需要手动维护在 `server-methods-list.ts` 里。
先讲这一页到底在解决什么
所有 WS 消息(请求/响应/事件)的 schema 都定义在 TypeBox 里,驱动运行时校验、JSON Schema 导出和 Swift 代码生成。先看 `src/gateway/protocol/schema.ts`,再跑 `pnpm protocol:gen` 生成产物。注意:feature discovery 列表不是自动扫出来的,需要手动维护在 `server-methods-list.ts` 里。
第一站
理解了这三种车,后面整页就都顺了。
客户端开过来的请求车:{ type: "req", id, method, params }。
服务器回去的答复车:{ type: "res", id, ok, payload | error }。
服务器主动广播的通知车:{ type: "event", ... }。
connect 先上路第一辆必须是 connect,像先进门打招呼,再谈别的。
第二站
这也是官方反复强调 single source of truth 的原因。
像门卫拿着蓝图验车:不符合协议的帧,别想轻松混进去。
像把施工图再导出成一套通用说明书,方便别的工具继续接力。
像把同一张蓝图自动翻译给 macOS 客户端,让它也按同样规则收发消息。
pnpm protocol:check这句像总验收:重新生成一遍,再检查产物有没有老老实实提交进仓库。
第三站
所以想查权威定义,应该先回到 schema 源头,而不是只看某个客户端的局部实现。
src/gateway/protocol/schema.ts这像总蓝图柜,协议形状先从这里定下来。
server.ts这里像真正上路的交警岗亭,方法和事件会在这边按蓝图落地。
dist/protocol.schema.json像对外分发的标准说明书。
TypeBox 在这里不是配角,它是 Gateway 协议那张“先画图、后施工”的总图纸。