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 处理好的结果数据下发给客户端
玩家的数据都是由 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 处理好的结果数据下发给客户端
相关文章推荐
- RTSP协议分析与标准RTSP服务端与客户端交互流程
- 服务端与客户端交互流程
- 提交接收端服务端与客户端交互流程
- 客户端与服务端交互流程
- python3中实现客户端与服务端交互发送文件
- android客户端与服务端交互的工具类
- TeamTalk服务端分析 三、服务端以及客户端流程
- 网络编程学习笔记(三)TCP协议及客户端与服务端交互Demo
- HLS协议之服务器与客户端之前的交互流程
- ArcGis Server ADF Toolbar与Map的客户端和服务端交互过程分析2
- base64服务端与客户端加解密交互
- linux中UDP程序流程、客户端、服务端
- Fresco之客户端与服务端的交互
- Android客户端与服务端交互之登陆示例
- HTTPS 客户端验证 服务端证书流程
- Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通
- Java网络编程(TCP协议-服务端和客户端交互)
- android客户端与服务端交互的三种方式
- Android客户端配合Servlert服务端实现简单的数据交互