二七王:收包分发器与失败回包处理
分发器只分发不写业务。判定顺序上先看 data.success,失败包一律先分流给 FailHandler——协议规定失败回包的 rpc 与请求同名(chupai 失败回 chupai, 成功走 chupai1/2/3),不先分流则每个业务 handler 都要自己判一遍。 未知 rpc 只警告不抛错,畸形入参不崩。路由表完整性断言留待全部 handler 就位。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
////////// 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 });
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user