您的位置:首页 > 其它

4. 游戏客户端和服务端的交互流程

2017-06-09 16:20 676 查看
    玩家通过登录服务器 login 获得一个 gate 的 IP 地址和一个 lobby 服务器的唯一ID serverid,然后连接到 gate 上,并把 lobby 的 serverid 和玩家 playerid 发送给 gate, 这样 gate 就能够记下此玩家(TCP连接)的 playerid 和所对应的 lobby 了

    玩家的数据都是由 lobby 进行处理,gate 负责把玩家的数据转发给 route, route 再转发给 lobby; lobby 处理完数据后,把结果发给 route, route 转发给 gate, gate 转发给客户端

    route 可能不止一台;如果有多台,那么 gate 就向每台 route 轮流发送数据,把数据转发的压力分摊到每台 route 上, 因此,玩家和服务端的交互,在逻辑上不能够有前后依赖关系,因为通过多台 route 转发数据, 第二个逻辑包可能比第一个逻辑包先到达 lobby; lobby 向 route 也是采用同样的轮流发送数据方法

    gate 接收到玩家发送的逻辑包后,会在逻辑包前面加上一些头部信息,头部信息就包括了 lobby 的 serverid( 逻辑包的目的地 ), gate 的 serverid( 逻辑包的出发地 ), 玩家的playerid, 然后再转发给 route

    route 收到 gate 发来的逻辑包后,根据头部信息发送给指定的 lobby 

    lobby 收到数据并处理完毕后,把头部信息原封不动加到处理好的数据结果前面,然后发送给 route, route 根据头部信息发送给对应的 gate, gate 根据头部信息中的 playerid 找到对应的 TCP 连接,最后把 lobby 处理好的结果数据下发给客户端
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: