跨服回调

回调设计是跨服基础的一个设计难点。类似于JavaScript的Ajax请求,我们希望在向跨服发送请求,拿到服务器的返回结果后能够执行一些回调动作。

如果使用Rpc框架,那么回调API看起来就是这样子的:

public Message sendData(Message request) {}

不管请求方是否需要回调,都是需要通过请求方发送一条消息到服务接收方。为了能重用协议,我们就只定义一条消息类型用来处理需要回调的业务。那么问题来了,需要回调的跨服请求可能很多,怎么来兼容多种情况呢。

我们可以直接使用子类型来定义种类,而把请求的参数统一封装成一个map参数。请求与响应协议体如下:

/*** 跨服回调请求方*/
@MessageMeta(module = Modules.CROSS, cmd = CrossCommands.G2F_CALL_BACK)
public class G2FCallBack extends Message {private int index;/*** 子类型 {@link com.kingston.jforgame.server.cross.demo.CrossDemoGameService}*/private int command;private transient Map<String, String> params = new HashMap<>();private String data;/*** 响应类型:{@link CallbackKinds#RPC_ASYNC}*/private int rpc;pub

游戏服务器框架之跨服(三)相关推荐

  1. 游戏服务器框架之跨服(二)

    rpc框架的优势 直接使用rpc框架来搭建跨服,我们就无需考虑跨服链路的建立,通信数据编解码,方法回调等底层问题. 手写跨服通信 rpc的本质其实就是跨服通信,底层是使用socket来进行数据传输的. ...

  2. 游戏服务器框架之跨服(一)

    如今的游戏开发,不搞个跨服玩法都不好意思说在做游戏了(当然,也跟游戏类型有关,一些轻度休闲游戏可以排除在外).跨服玩法的设计,可以进一步激发玩家追求高战力的虚荣心,也可以汇聚玩家数量,避免单服日活跃低 ...

  3. 开源游戏服务器框架NoahGameFrame(NF)客户端环境搭建(三)

    一.下载NoahGameFrame框架的客户端 1.进入到开源游戏服务器框架NoahGameFrame的客户端NFUnitySDK在GitHub官方界面NFUnitySDK 2.复制要Checkout ...

  4. 包含对象名字的游戏id_教你从头写游戏服务器框架(三)

    关于作者:韩伟,腾讯互娱高级工程师,目前在Next产品中心研发创新类型游戏. 本文为系列文章的第 3篇 第一篇:教你从头写游戏服务器框架(1) 第二篇:教你从头写游戏服务器框架(2)   协  程   ...

  5. 游戏服务器框架概括分析

    游戏服务器框架概括分析 关注公众号 风色年代(itfantasycc) 500G游戏开发资料随便拿! 这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小.选择写这样一个系列的文章, ...

  6. 高性能分布式游戏服务器框架

    欢迎大家Fork mqant开源框架 为什么决定要重新造一个轮子? 目前网上优秀的开源游戏服务器框架也不少(当然与web框架比起来就少太多了),但总结起来都各有各的优缺点,下面列出我在选型过程中的一些 ...

  7. golang Leaf 游戏服务器框架简介

    Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架.Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器. Leaf 的关注点: 良好的 ...

  8. python游戏服务器框架_有那些比较成熟的开源游戏服务器引擎/框架(编程语言不限)?...

    更新,没有看到服务器(逃. 下面仅为游戏引擎和框架推荐,需要的小伙伴简单看一下,正确的答案努力撰写中. 从角色扮演游戏到即时策略游戏,从冒险解谜游戏到动作射击游戏,甚至是只有一兆大小的迷你游戏,都有起 ...

  9. 教你从头写游戏服务器框架

    本文由云+社区发表 作者:韩伟 前言 大概已经有差不多一年没写技术文章了,原因是今年投入了一些具体游戏项目的开发.这些新的游戏项目,比较接近独立游戏的开发方式.我觉得公司的"祖传" ...

最新文章

  1. php汽车找车位,车停在哪最省心?小编奉上找车位小指南
  2. 【9704】【9109】麦森数
  3. java mqtt客户端_基于 t-io 实现一个 mqtt5 协议之 mica-mqtt
  4. 【C++基础】模板参数与模板继承
  5. 【spider】selenium模拟点击斗鱼示例
  6. 云+X案例展 | 民生类:纷享销客助力沃得农机构筑智能化、信息化之路
  7. 大数据技术是“地球的神经系统”
  8. Django Model View Template 之间的简单交互 (二)
  9. 通过配置文件连接mysql_利用配置文件连接数据库
  10. Windows API 逐个逐个学(3)----Windows系统基本服务API GetSystemDirectory
  11. JZ1-二维数组中的查找
  12. 桌面被恶意软件放上几个ie图标删除不了怎么办?
  13. 公安“智慧型”监所解决方案
  14. 计算机毕业设计之社区自行车租赁管理系统
  15. 年终总结系列1:基于IFRS9的预期损失准备金
  16. python pip安装第三方库出现error: option --single-version-externally-managed not recognized
  17. AntV-G6实现微服务拓扑图
  18. 支付宝信用卡还款即将收费,3个方法免手续费!
  19. emacs下安装eaf
  20. 返回const指针与返回const引用区别

热门文章

  1. 自律给你自由——设计布局的新姿势
  2. Java反射体系详解
  3. 大数据助推国家治理现代化
  4. 如何证明一门编程语言是图灵完备的?是否图灵完备,对语言来说会产生哪些影响?
  5. mysql查询最低工资的经历_MySQL 简单查询记录(二)
  6. 机器学习之鸢尾花实战
  7. 关于电流环带宽的一些理解
  8. [毕设自用]图像分割之肺部肺结节医学影像数据集LUNA16的基础知识汇总
  9. 成为精英中的精英的五个重要思想
  10. 通达oa高性能平台版部署linux,通达Oa搭建的云服务器是