fix(platform): preserve recoverable outcomes and terminal sessions

This commit is contained in:
2026-09-05 10:50:55 +08:00
parent 1e3a21b476
commit 8eae3258ca
16 changed files with 500 additions and 48 deletions
@@ -32,6 +32,15 @@ SDK runtime 也不导入框架实现层,平台适配由 `platform/game-host-ad
连接事件也提交到同一个 Store;重连只更换 app 连接状态,保留 room/players 引用。
切服先发送原始 `connect_*server` 信封,进房成功再原子标记已登录;普通重连才重新发送已保存的登录信封。
登录、进房的非零 `state` 通过必需的 `ScenePort.showServerDenial({ rpc, state, data })`
报告;`data` 保留服务器原对象,消费方依据 `showerror`、`error`、`roomcode` 等原字段处理。
这类结果不提交成功状态、不关闭连接,调用方可重试;成功回包缺少必需字段仍是显式错误。
`GameEntry.resolveSeatCount` 只接收真实房间的 `roomtype`,预检只检查该方法存在;
GameHost 在进房边界验证返回值是正整数并与服务器座位数组长度相同。
`assertGameContract(entry, samples)` 的每个样本由游戏提供 `roomtype`、`expectedSeatCount`
和对应的 `makeHost` 工厂,不要求游戏支持框架虚构的房间配置。
远程地址唯一取自 `data.urlserver`。配置请求使用空 body 的 POST,沿用无条件 `?` 缓存参数拼接。
原生 settings 方法名称、调用次序和 WVJB 初始化/handler 名称由 `config/sources`、
`adapters/native` 实现,`framework-tests/config` 与 `framework-tests/native` 验证。