CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
工具链

【工具链】协议 Mock:前端联调的假服务器

2026-09-23 16:58 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本

实战应用:用在哪里

前端的功能开发经常被服务器档在门外:后端的接口没写完,前端只能干等或造假数据。协议 Mock 在本地扮演服务器:前端发什么、Mock 按协议回什么,联调的等待变成并行。

Mock 的骨架

lua

---协议 Mock:按注册表应答
local MockSrv = { routes = {} }

---注册协议的模拟应答
function MockSrv.on(msgId, responder)
    MockSrv.routes[msgId] = responder
end

---收包的分发:路由命中即回包
function MockSrv.dispatch(msgId, body)
    local r = MockSrv.routes[msgId]
    if not r then
        Ops.log("Mock 未注册协议: " .. msgId)
        return nil
    end
    return r(body)
end

---注册示例:背包查询的模拟
MockSrv.on(MSGID.BAG_QUERY, function(body)
    return {
        slots = {
            { idx = 1, name = "金创药", count = 99 },
            { idx = 2, name = "裁决之杖", count = 1 },
        },
        maxSlot = 40,
    }
end)

Mock 的骨架是注册表:每个协议号注册一个应答器,前端的请求按协议号路由到应答器,回包的格式与真实服务器一致。注册的应答分静态与动态:静态的固定数据适合界面布局的联调,动态的函数应答适合交互逻辑的联调(请求带什么参数回什么结果)。协议的定义同源是 Mock 的灵魂:Mock 的路由表由协议文档生成,协议改了 Mock 同步改,联调的两端永远对着同一份协议。

场景的编排

lua

---场景编排:异常流程的模拟
function MockSrv.scenario(name)
    -- 场景一:背包已满的错误分支
    if name == "bag_full" then
        MockSrv.on(MSGID.BAG_QUERY, function()
            return { err = 2001, msg = "背包已满" }
        end)
    end
    -- 场景二:延迟 3 秒的慢响应
    if name == "slow_net" then
        MockSrv.delay = 3000
    end
    -- 场景三:随机掉线
    if name == "disconnect" then
        MockSrv.dropRate = 0.2
    end
end

场景的编排让前端在本地体验服务器的全部状态:错误的分支(背包满、权限不足)、网络的异常(延迟 3 秒、随机掉线)——这些场景在真实联调时最难造,在 Mock 里是一行开关。弱网的模拟让转圈与超时的处理在开发期就写对,上线后的体验问题提前消化。Mock 的验证与真实联调的衔接:前端在 Mock 上跑过的用例清单自动化地在真实联调时重放,两轮的结果对比就是联调的验收。Mock 的覆盖度统计:协议文档里的每条消息是否注册了 Mock,未注册的协议清单驱动补齐的优先级。

验证与监控

Mock 与真实服务器的同构性验证:同一请求的两端回包做结构比对,字段的漂移在联调前暴露;Mock 的使用率统计,团队的联调依赖度是工具价值的读数。

踩坑记录

Mock 的回包格式曾经与真实服务器漂移,字段改名后前端在 Mock 上一切正常、真实联调全线报错,同源生成根治。场景的开关曾经全局生效,同事的联调被自己的异常场景干扰,场景的会话隔离。Mock 的延迟模拟曾经阻塞了工具自身,异步的延迟实现让 Mock 始终在线。

上线要点

Mock 的协议同源生成进构建流水线,协议的变更自动更新 Mock。前端的新人入职第一课是在 Mock 上跑通全部界面,联调的门槛降到零。异常场景的清单随线上事故扩充:真实环境出的体验问题回补为 Mock 的场景。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

框架设计行会等级经验成长

【框架设计】行会等级:行会经验与等级成长框架

实战应用:用在哪里 行会等级是行会玩法的地基:建筑上限、商店货架、活动资格全部挂在等级上。行会经验与等级成长框架把升级路径做…

2026-09-23 19:15 996 技术组 · 0 阅读
玩法策划大事记里程碑展示

【玩法策划】行会大事记:里程碑事件的自动记录与展示设计

实战应用:用在哪里 行会走过两年,第一次拿下沙巴克、第一位满级成员、最强的一次攻防战,这些瞬间散落在聊天记录里无人记得。行会…

2026-09-23 19:15 996 技术组 · 0 阅读
案例复盘合服抢注重名复盘

【案例复盘】合服抢注:重名抢注引发的归属纠纷复盘

实战应用:用在哪里 两服合服时允许玩家自由抢注重名角色,结果原服老玩家“至尊战神”的名字被另一服新号抢先注册,老玩家两年的社…

2026-09-23 19:15 996 技术组 · 0 阅读
前端接口行会申请审批列表

【前端接口】行会申请列表:入会申请的批量审批界面

实战应用:用在哪里 热门行会一天几十份入会申请,逐条点开看效率极低还容易漏人。行会申请列表把申请铺成可批量操作的清单:每行显…

2026-09-23 19:15 996 技术组 · 0 阅读
引擎触发炼狱回廊递减增益

【引擎触发】炼狱回廊:逐层递减的增益触发设计

实战应用:用在哪里 炼狱回廊是高端玩家的试炼场:十层回廊逐层深入,每下一层全属性递减百分之五,越往深处怪物越强、自己越弱,奖…

2026-09-23 19:15 996 技术组 · 0 阅读
玩法策划跨服镖局押运跨服

【玩法策划】跨服镖局:跨服押运的高风险高回报设计

实战应用:用在哪里 本服押镖产出稳定但缺乏刺激,高战玩家押镖像散步。跨服镖局把押运拉到跨服边境:路线穿越两服交界的无主之地,…

2026-09-23 19:15 996 技术组 · 0 阅读