前后端 Lua 脚本之间需要双向通信:后端把结算结果推给前端刷新界面,前端把界面操作回传给后端处理。996 引擎的 Lua 网络消息通道(SendLuaNetMsg 配合消息号 99999)就是这条专用通道,本篇给出通道的使用约定,避免各写各的格式。
-- 后端:发送一条带内容的消息(内容直接作为字符串传输)
SendLuaNetMsg 99999 0 0 0 击杀达成|奖励:金币x100
-- 前端:在网络消息回调里按消息号识别
function OnLuaNetMsg(id, data)
if id == 99999 then
showTip(data) -- data 即后端发送的字符串
end
end
消息号 99999 是前后端约定的业务通道,其他消息号留给引擎。多字段内容用分隔符拼串(竖线或井号),前端按分隔符拆分。
前端把界面操作(按钮点击的参数)通过同一通道回传,后端在消息处理入口按约定的命令字段分发。约定格式示例:cmd=claim|questId=12,后端解析 cmd 字段后路由到对应处理函数。回传的任何参数都按不可信数据处理(校验原则篇),解析后立即做类型与范围校验。
消息号独占:99999 通道只跑业务消息,调试与心跳走别的通道,避免格式混乱。内容精简:通道传输的是"结果与参数",不是大段文本(大文本走配置表,消息里只传 id)。格式入文档:每种消息的字段顺序、分隔符、示例写进协议文档,前后端各留一份——通道约定文档化的成本一次性,收益是此后所有联调都有据可查。nn## 通道的联调方法nn联调期在前后端各加一个通道日志:发送端打印消息号与内容,接收端打印收到的原文。两端日志对照,格式问题、字段缺失、乱码三类问题当场定位。联调通过后日志降级为仅记录错误,避免常态刷屏。