分发器只分发不写业务。判定顺序上先看 data.success,失败包一律先分流给 FailHandler——协议规定失败回包的 rpc 与请求同名(chupai 失败回 chupai, 成功走 chupai1/2/3),不先分流则每个业务 handler 都要自己判一遍。 未知 rpc 只警告不抛错,畸形入参不崩。路由表完整性断言留待全部 handler 就位。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
25 lines
1.2 KiB
JavaScript
25 lines
1.2 KiB
JavaScript
///////////////////////////////////////////////////////////////
|
|
////////// EQW_FailHandler: 失败回包 //////////////////////////
|
|
///////////////////////////////////////////////////////////////
|
|
// 协议 §0.2:服务端受理请求时任一校验不通过,回一个【rpc 与请求同名】的失败包,
|
|
// data 只含 success:false 与 errcode,且只回给请求者。
|
|
//
|
|
// errcode(服务端 youle_erqiwang.ERR):
|
|
// 1 PLAYER 玩家/房间/座位校验不通过 2 NODESK 牌桌或牌局不存在
|
|
// 3 STEP 当前阶段不允许该操作 4 SEAT 位置不符或还没轮到
|
|
// 5 PARAM 参数非法 6 RULE 规则不允许
|
|
//
|
|
// 失败信息是【一次性】的,不属于对局状态,故不进 GameState,只随事件带出去。
|
|
var EQW_FailHandler = EQW_FailHandler || {
|
|
|
|
ERR: {
|
|
PLAYER: 1, NODESK: 2, STEP: 3, SEAT: 4, PARAM: 5, RULE: 6
|
|
},
|
|
|
|
handle: function (rpc, data) {
|
|
var errcode = (data && typeof data.errcode === 'number') ? data.errcode : 0;
|
|
console.warn('[EQW] 请求失败: rpc=' + rpc + ' errcode=' + errcode);
|
|
EventBus.emit(EQW_Events.EQW_RPC_FAILED, { rpc: rpc, errcode: errcode });
|
|
}
|
|
};
|