3.3 KiB
3.3 KiB
最小登录网络故障验收方案与实施前裁决
2026-09-22,用户明确执行独立审查与网络自动化测试;当前不打包。目标仅 C:/projects/ft/Client,正式 http://s101.local:18080/,现有101游戏会话不变。
方法与边界
- 先核对Unity实例、当前授权/API及错误基线。独立审查agent只审查前轮五文件与本轮四文件,不修改生产代码。
- 在127.0.0.1临时端口运行标准库测试代理,固定上游s101.local:18080。只允许account/Login(账号101/102)、playerdata/Get(空对象只读)、gamehub升级;其他路径拒绝。不记录Cookie、令牌、存档正文。控制端点仅loopback;全部测试后停止进程。
- Unity内通过现有公开构造函数创建独立S101AccountSession和Config/CustomServerMgr/SignalRService,不注册到GContext,不改全局配置、PlayerPrefs或当前服务。测试使用102,避免服务端单连接策略挤掉当前101。Config源码IL已确认Set仅写实例内字典。
- HTTP:代理一次返回401→实际会话未授权;恢复转发→真实登录成功。再一次延迟超过生产15秒超时→Timeout/未授权;恢复真实转发→登录成功且只读授权Get成功。可加真实TCP中断→Network分类恢复。数据不写KV。
- SignalR:独立实际生产SignalRService、实际Unity SignalR DLL、真实102认证;只调用Test只读方法。由代理在已有WebSocket通道上断开底层socket,并短暂拒绝重连;期间观察IsConnected=false,然后不手动Connect而观察自动恢复、再次Test=OK;ReleaseAsync后确认通道关闭且无新连接。
- 临时动态C#均先compile-only再执行,保持Restricted权限。finally释放独立Hub、认证会话和代理。正式101状态及错误日志前后核对,不停止Play/清控制台制造通过。
完整评审裁决
- 方法不需要管理员、不影响整机网络或D盘Editor,不改客户端生产地址。代理只有固定上游和白名单,可逆且范围可控,允许实施测试脚本。
- 401为代理注入的真实HTTP响应;超时和WebSocket断开为真实传输故障,非HttpMessageHandler/Hub替身。但这是Unity中独立生产对象的集成测试,不能冒充PFLoginAct完整UI流程/用户正在玩的连接,不能关闭其尚未覆盖的验收项。
- Test RPC不是服务端主动业务推送;订阅恢复仍需可安全触发的实际消息。没有明确安全端点时不制造奖励/资产/会员事件。
- 不修改生产代码。独立审查若发现问题,先另行裁决具体修复边界及测试,再修改。匹配APK与真机均留到最后。
- 本方案由主会话完整评审通过;独立代码审查结论另存,不将本方案自审冒充独立审查。
工具权限核对后的修订(实施前)
Unity Restricted 同时拒绝直接 HttpClient 与认证构造器参数中的 HttpMessageHandler 元数据;两次compile-only失败均已存证,未执行也未放宽权限。改用独立net9.0测试宿主编译实际S101AccountSession/CustomServerMgr/RTService源文件、加载Client/Assets/Plugins/SignalR真实DLL;仅引擎/UI事件胶水使用替身,HTTP/WebSocket/服务端真实。由外部宿主控制loopback代理。允许执行这一更小隔离范围,不将结果记作Unity运行或完整UI验收;C盘现有101仍保持不动。