4. 游戏客户端和服务端的交互流程
来源:互联网 发布:js隐藏一个button按钮 编辑:程序博客网 时间:2024/06/07 01:49
玩家通过登录服务器 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
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 处理好的结果数据下发给客户端
阅读全文
0 0
- 4. 游戏客户端和服务端的交互流程
- 服务端与客户端交互流程
- 客户端与服务端交互流程
- 客户端和服务端交互的东东
- 简单的Android服务端和客户端登录交互(服务端)
- 简单的Android服务端和客户端登录交互(客户端)
- tcp服务端和客户端交互
- Android 搭建客户端手机和服务端的交互
- 【黑马程序员】Socket编程实现服务端和客户端的交互
- 安卓客户端和服务端的交互自我解惑
- 客户端和服务端交互的三种方式
- 利用Netty进行客户端和服务端交互的入门示例
- Socket编程实现服务端和客户端的交互
- socket服务端和客户端数据通信 数据交互
- android客户端和服务端js交互
- zookeeper客户端和服务端交互分析
- C#实现服务端和客户端交互
- Fresco之客户端与服务端的交互
- JS-使用ES6模块化的注意点
- 不同的路径I
- 简单洗牌算法 swift3.0
- P1215 母亲的牛奶
- 第一次独立项目上线测试
- 4. 游戏客户端和服务端的交互流程
- 【Unity】将一串字符串保存到Unity中,保存成任意格式
- js中数组的方法总结
- Linux操作笔记
- springBoot+druid+mybitis整合
- Plug-in 向导页
- 那些将来应该在博客中出现的东西
- Netty源码阅读
- js刷新页面的方式