二七王:重连与开局 handler,路由表注册齐全

重连即重画:断线重连与硬刷新复用同一条路径(填 GameState → emit RESYNC_ALL),
不为重连单写一套渲染。deskinfo 按 step 分组填充,重连不重放 70 分开底那类
一次性事件。StartWar 支持差异化下发,按本座位取自己那份。

路由表 12 条注册齐全,test_dispatcher 的完整性断言随之转绿——
漏接一个包就会红。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-27 18:15:04 +08:00
co-authored by Claude Opus 5
parent e8fc3a9bfa
commit a5ca3bc5d9
4 changed files with 270 additions and 7 deletions
+11 -7
View File
@@ -4,7 +4,18 @@ const t = require('./_assert')();
load('client/js/gameabc-framework/system/EventBus.js');
load('client/js/01_SubGame/codes/state/Events.js');
load('client/js/01_SubGame/codes/state/GameState.js');
load('client/js/01_SubGame/codes/state/RoomOptions.js');
load('client/js/01_SubGame/codes/net/handlers/FailHandler.js');
load('client/js/01_SubGame/codes/net/handlers/DealHandler.js');
load('client/js/01_SubGame/codes/net/handlers/CallHandler.js');
load('client/js/01_SubGame/codes/net/handlers/MainHandler.js');
load('client/js/01_SubGame/codes/net/handlers/BuryHandler.js');
load('client/js/01_SubGame/codes/net/handlers/PlayHandler.js');
load('client/js/01_SubGame/codes/net/handlers/QueryHandler.js');
load('client/js/01_SubGame/codes/net/handlers/ReadyHandler.js');
load('client/js/01_SubGame/codes/net/handlers/ResultHandler.js');
load('client/js/01_SubGame/codes/net/handlers/ResyncHandler.js');
load('client/js/01_SubGame/codes/net/Dispatcher.js');
// ---- 注册与分发 ----
@@ -40,16 +51,9 @@ t.eq('未知 rpc 不抛错', threw, false);
});
// ---- 路由表完整性:协议里每个服务端推送 rpc 都要有 handler ----
// (本条在 Task 10 全部 handler 就位后才会真正通过;此刻先写下期望,
// Task 10 完成时它会自动转绿——这正是它存在的意义:漏接一个包就会红)
// Task 10 完成后取消注释以下代码块
/*
load('client/js/01_SubGame/codes/state/GameState.js');
load('client/js/01_SubGame/codes/state/RoomOptions.js');
['fapai','jiaofen','shangzhuang','xuanzhu','maipai',
'chupai1','chupai2','chupai3','mingpai','tishi','jiesuan','zhunbei'].forEach(rpc => {
t.eq('已注册 handler: ' + rpc, EQW_Dispatcher.hasHandler(rpc), true);
});
*/
process.exit(t.done('dispatcher') ? 0 : 1);