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

【网络通信】跨服路由:跨服消息的转发链路设计

2026-09-23 03:30 作者:996 技术组 996引擎Lua教程传奇脚本网络通信跨服路由

实战应用:用在哪里

跨服战场里本服玩家给跨服侧发消息,目标服地址写死在脚本里,某台跨服节点下线后消息石沉大海。跨服路由把目标地址收敛进路由表:消息按目标服标识查表转发,未知目标直接拦截告警,节点下线由路由表摘除。

路由表与转发封装

路由表维护目标服到转发通道的映射,转发封装统一做地址校验、消息登记与异常拦截,业务侧不直接接触通道细节。

lua
local ROUTE = { ["S1"] = "chan_s1", ["S2"] = "chan_s2", ["S3"] = "chan_s3" }
local function routeMsg(dstSrv, kind, payload)
    local chan = ROUTE[dstSrv]
    if chan == nil then
        sendmail("#运维老张", 918, "跨服路由异常", "未知目标服 " .. dstSrv .. ",消息已拦截", "")
        return false
    end
    sendluamsg(dstSrv, 7350, 0, 0, 0, kind .. "|" .. payload)
    return true
end

消息登记与投递回执

每条跨服消息登记源服、目标服、类型与时间戳,投递超时未收到回执的消息进入重发队列,最多重发三次。

lua
local PENDING = {}
local function sendTracked(dstSrv, kind, payload)
    local msgId = os.time() .. "|" .. dstSrv
    PENDING[msgId] = { t = os.time(), retry = 0 }
    routeMsg(dstSrv, kind, payload)
    return msgId
end
local function ackMsg(msgId)
    PENDING[msgId] = nil
end

验证与监控

路由验证三服地址全部可达、未知服拦截告警、下线节点摘除后消息走重发;回执超时三次后消息转入人工核对清单。转发链路对业务透明,业务侧只声明目标服与消息类型,通道选择由路由层决定。未知目标的拦截名单每天核对一次,连续出现的未知目标服说明有脚本写死了过时地址。路由表变更走登记审批,每次调整都留变更人、变更时间与影响范围,回查问题时按变更记录倒推。监控跨服消息的投递成功率与重发次数,重发集中在同一目标服就是节点不稳定。

踩坑记录

路由表写死在三个脚本里,节点扩容后改表漏了一处,消息继续发往已下线的旧节点,路由表收敛为单点维护。消息登记只记了发送没记回执,重发无法判断哪些已送达,回执消费登记后整条链路才可查可追溯。payload 里带竖线分隔符与登记格式冲突,登记字段统一转义。跨服节点维护窗口的路由摘除靠人工,摘除脚本接入值班公告后自动化执行。消息类型注册与路由表合并管理,新增跨服消息类型只登记一处,避免类型与路由两套清单各改各的。

作者履历与出处

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

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

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

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

Lua实战选择排序装备评分排行榜

【Lua实战】选择排序:装备评分榜的局部有序

实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…

2026-09-23 10:57 996 技术组
玩法策划沙巴克攻城皇宫归属

【玩法策划】沙巴克攻城:城门耐久与皇宫归属的规则设计

实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…

2026-09-23 10:57 996 技术组
玩法策划影分身分身真身识别

【玩法策划】影分身:分身嘲讽与真身识别的玩法设计

实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…

2026-09-23 10:57 996 技术组
网络通信消息重试退避信令

【网络通信】消息重试:关键信令的确认与退避重发

实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…

2026-09-23 10:57 996 技术组
运维发布开区队列预热

【运维发布】滚动开区:分批开服的队列与预热流程

实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…

2026-09-23 10:57 996 技术组
性能调优广播节流合帧

【性能调优】广播节流:跑动动作的合帧下发

实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…

2026-09-23 10:57 996 技术组