FRONTEND / COMPARISON源码对照 · 2026-10-13 · gogogold代码未修改
架构边界 · 状态归属 · 生命周期 · 验收条件

gogogold vs Stake

先从架构层明确谁负责状态、请求和清理,再比较实现与风险。gogogold按Web应用评估;建议、事实与待验证项分别标注。

YOUR PROJECT

gogogold

游戏容器与移动体验已经有基础。
优先补异步结果保护和交互一致性。

React / Nextiframe / UnityGC / SC
VS
REFERENCE PRODUCT

Stake

共享游戏壳、状态流程和事件账本值得借鉴。
加载、安全与交互的具体做法见独立分析。

SvelteKit内建游戏事件账本
ARCHITECTURE REVIEW

先治理边界,再决定复用什么

gogogold是以供应商游戏容器为核心的Web应用;Stake包含自有游戏控制器。最值得对照的是会话、生命周期和基础设施,具体游戏业务须保留各自边界。

状态有唯一权威来源异步结果绑定当前会话任务由实例负责清理安全与性能用场景验收
阅读顺序:架构分层 → 状态与数据流 → 风险优先级 → 建议决策 → 具体模块代码。图与判断来自静态源码;登录后路径和服务器实现未完整验证。

01 · 六层架构:谁负责什么

从启动到服务器边界,逐层比较职责与协作关系。

02

页面与交互编排

gogogold

首页、登录、游戏路由;RouterMgr;统一弹窗工厂和自动弹窗队列。

Stake

共享页面壳;网址驱动弹窗宿主;按定义检查限制和关闭条件。

边界判断

可恢复入口与自动任务分别管理。登录/活动入口可进入URL,奖励继续使用队列。

核对架构依据
03

领域与游戏边界

gogogold

供应商iframe与Unity适配器负责连接、超时、降级和退出。

Stake

共享游戏壳处理可用状态;Dice等内建游戏自己维护单局与自动模式。

边界判断

gogogold保留适配器边界,统一加载阶段;不复制内建下注状态机。

核对架构依据
04

状态与会话归属

gogogold

Redux保存账号和余额;Zustand管理目录、分类与偏好;会话恢复及切换另有调用链。

Stake

组件上下文约束会话store;共享偏好存储;游戏账本按单局编号协调事件。

边界判断

每类数据明确权威来源、写入入口、账号作用域和失效时机,避免重复所有者。

核对架构依据
05

基础设施

gogogold

共享请求拦截器、超时/重试、短缓存、广播通道、LCPGate、图片与资源加载工具。

Stake

GraphQL/游戏HTTP/订阅通道;依赖预载、按需组件和图像工具。

边界判断

协议服务于业务,不因参考站而迁移协议。先补取消、脱敏和观测边界。

核对架构依据
06

服务器与外部系统

gogogold

登录、余额快照和供应商通信是可见客户端合同;未审计gogogold服务器实现。

Stake

只能看到客户端接口与响应处理,未取得真实服务器源码。

边界判断

授权、资金与开奖的最终判断由服务器负责。客户端检查只改善早期反馈和状态协调。

核对架构依据

02 · 数据流与状态所有权

要统一的是边界与写入规则,不能把所有状态简单塞进同一个store。

gogogold · 当前可见主线

用户操作 → 页面 / 游戏适配器 → 共享请求 / 外部协议 → 服务端结果 → 账号或目录状态 → 组件显示

返回大厅触发余额刷新;跨标签广播负责前端协调。
Stake · 当前可见主线

用户操作 → 共享壳 / 游戏控制器 → 查询 / 下注 / 订阅 → 本局事件与会话状态 → 展示与结束清理

账本描述本局事件协调,不是服务器资金账本。
数据领域当前归属权威来源建议约束
身份与会话gogogold:登录恢复、token刷新与账号状态;Stake:上下文中的session。服务器身份为权威;前端会话仅为客户端视图。切账号时标记身份版本;旧请求和账号相关缓存不得发布到新会话。
GC / SC余额gogogold:userInfo快照、显示单位与回大厅刷新。Stake:本局事件账本与真实余额同步。余额快照/事件应各自遵守服务器合同。定义版本是否单调、币种单位及允许覆盖的字段;合同未确认前不随意丢弃旧版本响应。
目录与偏好gogogold:目录store与选择性持久化;Stake:偏好store与cookie。目录来自服务;界面偏好由用户选择。区分公共目录、账号收藏、最近记录与界面习惯;逐项规定持久化和切账号失效。
游戏实例gogogold:iframe/Unity实例及加载任务。Stake:游戏壳与具体游戏控制器。当前实例拥有监听、计时器和资源句柄。退出有统一dispose入口;迟到消息和异步结果须绑定当前实例。
弹窗gogogold:工厂管理资源,管理器管理显示,队列管理自动调度。Stake:URL与弹窗定义。显示状态与加载资源分开。避免队列、URL与组件同时争夺打开状态;入口恢复只覆盖可恢复的业务弹窗。

03 · 风险排序与验收条件

P1优先核验正确性与信任边界,P2治理生命周期与观测;均未据此宣称线上故障已复现。

P1

旧账号响应发布到新会话

静态风险,未复现

依据首页effect依赖userId,但已见cleanup只清Live定时器,缺少等价的响应身份检查。

建议复用KYC当前身份校验方式,响应发布前检查身份/请求代次。

如何验收

延迟账号A请求,切到B后再返回A:B的目录、收藏和定时任务不被覆盖。

核对架构依据
P1

超时与外部取消没有统一生效

代码路径已确认,运行效果待验证

依据共享请求存在内部timeout controller;传入外部signal时,fetch选外部signal。

建议将超时、外部取消和页面退出合成一个有效信号,并区分取消原因。

如何验收

仅超时、仅外部取消、二者同时发生:请求均能终止,计时器被清理,取消不会误触重试。

核对架构依据
P1

内容与日志的信任边界

代码路径已确认,线上影响未知

依据富文本组件当前直接输出content;调试路径接收完整配置和响应。

建议先追踪内容源/服务端清洗与生产日志开关;按输出位置补清洗和字段脱敏。

如何验收

不可信标签/属性被阻止;授权头、密码和验证码不会进入相关日志。

核对架构依据
P2

游戏退出后的任务归属

架构核验项

依据iframe与Unity已有不同的保护/销毁机制,尚不能由局部函数推出全链路清理完成。

建议让游戏会话适配器统一拥有消息订阅、加载任务和dispose职责。

如何验收

进入后立即退出、连续切换游戏:旧实例不回写,监听和资源任务得到释放。

核对架构依据
P2

首屏门控被当成速度结论

机制确认,收益未测

依据已有LCPGate、分区懒挂载、图片优先级和录屏按分支加载,尚无同条件性能对照。

建议记录门控完成原因与关键资源时序,再为首页和游戏入口设预算。

如何验收

同设备/网络测量LCP、CLS、INP;能解释超时兜底、接口等待、图片和SDK成本。

核对架构依据

04 · 建议采用的架构决策

以下是建议,尚未修改gogogold项目。先做局部治理,再用证据决定是否需要更大重构。

建议决策 · 01

保留现有React / Next与共享请求底座

现有能力已覆盖容器、弹窗、缓存与加载。框架和协议迁移没有当前证据支持。

代价是继续治理已有接口和状态边界;不以重写替代问题定位。
建议决策 · 02

把“会话版本”作为异步发布边界

账号相关异步结果先证明属于当前会话,再写入共享状态;不要求每个公开请求都登录。

版本标记需要与登录、退出、切账号统一接线;取消请求本身仍不足以替代回写检查。
建议决策 · 03

以游戏会话适配器统一生命周期

供应商能力仍由iframe/Unity适配器实现,对外暴露加载、就绪、失败和退出阶段。

需要逐一适配供应商协议;共享壳不承担供应商内部规则。
建议决策 · 04

渐进收敛状态所有权

先建立状态清单与写入入口,再合并重复逻辑;保留Redux/Zustand现有明确职责。

短期仍是双状态库。是否收敛为一种,需由重复所有权和实际维护成本决定。
建议决策 · 05

安全和性能以边界验证验收

保护覆盖具体输出/请求/会话,性能覆盖具体设备与场景;代码评分不替代验证。

需要针对性运行验证和观测数据,不能仅靠静态报告给出达标结论。
实施顺序:先验证P1场景并修正对应边界 → 统一游戏退出与状态清单 → 用同条件指标核验首屏策略。保留现有弹窗、虚拟列表、资源调度和显示单位逻辑。代码做法评分留在“实施对照”,不计算全站架构总分。下载架构整理依据