firefly服务器间通信演示
源地址:http://www.9miao.com/question-15-54560.html
最近好多童鞋都在问firefly几个服务器之间是如何通信的,其实在之前的distributed使用文档中有过了相关的介绍(本文可结合那篇文档一起查看,更容易理解)。一个最简单的游戏服务器,肯定包括net(负责同客户端连接,将客户端消息传给gate处理)、gate(负责将客户端的请求分配到对应的逻辑服务器中)和scene(场景服务器,游戏中主要的逻辑计算都在此服务器中)。我们将net和scene称为node服务器,gate称为root服务器,下面就node与root之间的交互进行一个简单的演示(本文中的代码都可在附件中下载到)。
1.创建工程
命令行下输入firefly-admin.py createproject test_distributed(linux在终端输入),
<ignore_js_op>

firefly会在该目录中创建一个名为test_distributed的工程
<ignore_js_op>

2.导入工程
将工程导入到eclipse中
<ignore_js_op>

3.配置参数
配置config.json中的相应参数
<ignore_js_op>

具体参数含义和配置说明详见:http://bbs.9miao.com/forum.php?m ... 6orderby%3Ddateline
4.编写代码
在上面填写的server配置的app对应路径下分别建立root.py和node.py。
root.py:
<ignore_js_op>

第8行,使用rootserviceHandle方法修饰自定义的供node调用的方法returnData_1001。rootserviceHandle方法为firefly内部定义好的方法(建议去看看firefly源码),可直接调用,具体作用为修饰root服务器中可供node服务器调用的方法,没有被rootserviceHandle修饰的方法,node服务器不可调用
第13行,调用node服务器的printData_1002方法,参数为data
第24行,result为调用node服务器的subNu_1004方法(参数为a,b)发回的延迟对象
第26行,当延迟对象的结果返回后,将返回的结果作为参数传递到printResult方法中
第29行,10秒后执行test方法,参数为100和50
<ignore_js_op>

第8行,使用remoteserviceHandle方法修饰自定义的供root调用的方法returnData_1001。rootserviceHandle方法也是firefly内部定义好的方法,具体作用为修饰node服务器中可供root服务器调用的方法,没有被remoteserviceHandle修饰的方法,root服务器不可调用
第18行,5秒后调用root服务器的returnData_1001方法,参数为后面的字符串
※运行这个工程后,第5秒,node会去调用root服务器中的returnData_1001这个方法,returnData_1001会打印出node传来的字符串并将此字符串作为参数传递给node服务器中的printData_1002方法,printData_1002将此字符串打印出来,这就完成了一个完整的交互。第10秒,root会调用node服务器的subNu_1004方法(参数为100,50),并打印出得出的结果。
5.运行startmaster.py
<ignore_js_op>

红线部分为node调用root的方法returnData_1001的结果,蓝线部分为root调用node的方法printData_1002的结果,粉色部分为root调用node的方法subNu_1004的结果。
firefly服务器间通信演示的更多相关文章
- Java中通过方法创建一个http连接并请求(服务器间进行通信)
服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...
- 系统间通信(5)——IO通信模型和JAVA实践 下篇
7.异步IO 上面两篇文章中,我们分别讲解了阻塞式同步IO.非阻塞式同步IO.多路复用IO 这三种IO模型,以及JAVA对于这三种IO模型的支持.重点说明了IO模型是由操作系统提供支持,且这三种IO模 ...
- Android : App通过LocalSocket 与 HAL间通信
LocalSocket其通信方式与Socket差不多,只是LocalSocket没有跨越网络边界.对于*nix系统来说,“一切皆为文件”,Socket也不例外,Socket按照收发双方的媒介来说有三种 ...
- 线程间通信 GET POST
线程间通信有三种方法:NSThread GCD NSOperation 进程:操作系统里面每一个app就是一个进程. 一个进程里面可以包含多个线程,并且我们每一个app里面有且仅有一 ...
- Linux下不同服务器间数据传输--转载
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- Linux下不同服务器间数据传输
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)(zz)
linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl) 分类: linux2011-10-10 13:21 8773人阅读 评论(1) 收藏 举 ...
- 系统间通信(10)——RPC的基本概念
1.概述 经过了详细的信息格式.网络IO模型的讲解,并且通过JAVA RMI的讲解进行了预热.从这篇文章开始我们将进入这个系列博文的另一个重点知识体系的讲解:RPC.在后续的几篇文章中,我们首先讲解R ...
- 系统间通信(9)——通信管理与RMI 下篇
接上文<架构设计:系统间通信(8)--通信管理与RMI 上篇>.之前说过,JDK中的RMI框架在JDK1.1.JDK1.2.JDK1.5.JDK1.6+几个版本中做了较大的调整.以下我们讨 ...
随机推荐
- VS2012报表(RDLC)系列应用之单据批量打印
一.前言 最近做的项目需要单据批量打印的功能,优先想到用RDLC来实现.经过Visual Studio几个版本的发展后,RDLC愈发成熟,操作方式也变得简洁,相比vs2005的版本,有质的提升,不过仍 ...
- C# DateTime格式化
DateTime. ToString() -- :: ToBinary() - ToFileTime() ToFileTimeUtc() ToLocalTime() -- :: ToLongDateS ...
- WINDOWS2008 设置FTP防火墙规则
在防火墙入站规划这里,加上21.20两个端口. 然后重启ftp服务,cmd命令:net stop ftpsvc & net start ftpsvc(重启ftp服务) 一定要重启ftp服务,不 ...
- 深入探析koa之中间件流程控制篇
koa被认为是第二代web后端开发框架,相比于前代express而言,其最大的特色无疑就是解决了回调金字塔的问题,让异步的写法更加的简洁.在使用koa的过程中,其实一直比较好奇koa内部的实现机理.最 ...
- 基本排序算法的java实现
本例子实现了一些常见的排序算法,注释中也有一些关于这些算法的思想的描述,这里不做多说,直接上代码. import java.awt.List; import java.util.ArrayList; ...
- 'WinMain' : function cannot be overloaded
Create a MFC Application (UNICODE), paste following code in one of your cpp file. int APIENTRY WinMa ...
- 一个功能齐全的IOS音乐播放器应用源码
该源码是在ios教程网拿过来的,一个不错的IOS音乐播放器应用源码,这个是我当时进公司时 我用了一晚上写的 图片都是在别的地方扒的,主要是歌词同步,及上一曲,下一曲,功能齐全了 ,大家可以学习一下吧 ...
- 用C语言实现统计一个文件夹中各种文件的比例
<UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文 ...
- Geographic Coordinate Systems
Coordinate Systems Geographic Coordinate Systems This is an archive of a previous version of the Arc ...
- Linq一对多联合查询
问题: 学生表,班级表,我要班级下面学生 A表,字段:AID,CLASSB表,字段 :BID,BNAME,AIDA表数据1 班级12 班级2B表数据1 学生1 12 学生2 1 3 学生3 24 学生 ...