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>
![](http://down.9miao.com/attachment/forum/201311/18/134602x405cn1a3w3agit1.png)
firefly会在该目录中创建一个名为test_distributed的工程
<ignore_js_op>
![](http://down.9miao.com/attachment/forum/201311/18/134634sqf6ewvfq13eevqq.png)
2.导入工程
将工程导入到eclipse中
<ignore_js_op>
![](http://down.9miao.com/attachment/forum/201311/18/134701a6hll688u8lzmkyj.png)
3.配置参数
配置config.json中的相应参数
<ignore_js_op>
![](http://down.9miao.com/attachment/forum/201311/18/134805tgex7dswwk7ek000.png)
具体参数含义和配置说明详见:http://bbs.9miao.com/forum.php?m ... 6orderby%3Ddateline
4.编写代码
在上面填写的server配置的app对应路径下分别建立root.py和node.py。
root.py:
<ignore_js_op>
![](http://down.9miao.com/attachment/forum/201311/18/134834ie12gzrse8w8dkss.png)
第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>
![](http://down.9miao.com/attachment/forum/201311/18/134909is8sz8pwerch9qkp.png)
第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>
![](http://down.9miao.com/attachment/forum/201311/18/134942qoktjb17oj8ho8uj.png)
红线部分为node调用root的方法returnData_1001的结果,蓝线部分为root调用node的方法printData_1002的结果,粉色部分为root调用node的方法subNu_1004的结果。
相关文章
- linux网站服务器安全加固设置方案
- 【说站】Nginx 规则防止服务器被恶意扫描下载
- Git服务器搭建简明教程
- 容器部署和无服务器计算那些事儿
- 配置OAuth2认证服务器和资源服务器-完整示例
- mysqldump 把数据库备份到异地的服务器详解数据库
- 的构建Linux 构建最小型服务器的挑战(linux最小服务器)
- 器步步俱升:手把手教你配置Linux Web服务器(linux配置web服务)
- 一步步搭建 Linux 服务器(linux安装服务)
- 如何正确配置 MongoDB 服务器?(mongodb服务器配置)
- 京东云第二代自研云服务器4月将上线 为大规模部署而生
- win2003DNS服务器配置方法[图文详解]