pomelo电动滑板 gate 怎么知道其他玩家在线

Pomelo 二 - 简书
前言##昨天,简要的介绍了客户端如何发起对Pomelo的请求和处理pomelo响应,今天,我们说一下,Pomelo服务端如何处理请求响应以及如何开始我们服务端代码的编写。
Pomelo 请求与响应
Pomelo请求响应流程图。
在pomelo 请求响应模型中,它只有三层。发起请求与响应的客户端。接受,响应请求的Frontend。处理Frontend 请求与响应的Backend。
在昨天,我们已经知道了如何利用frontend进行与客户端的通信,那么什么是Backend?我先来看一下官方的定义:Frontend(connector)用于面向客户端的连接维护Session信息分发请求给Backend推送消息给客户端
Backend处理来自于Frontend的请求通过Channel 或者 Response 推送请求给frontendRpc 服务
从以上定义中,我们可以这么认为,Frontend 是用于面向客户端请求的服务器,用于维护当前的连接数以及让客户端能够访问Backend 的桥梁,而Backend 用于处理游戏的逻辑。为了方便了解,我们可以阅读官方提供的框架图。
创建Frontend和Backend###Pomelo 有一个特点就是通过对目录和命名约定进行来进行对组件的创建。现在我们去到./game-server/app/servers/
我们所有关于frontend和backend的代码都有在该目录下创建。创建规则
Frontend的创建
├─connector
│ └─handler
entryHandler.js
第一级目录为servers Type,就是定义这个在服务端处于什么类型,例如,我们要创建一个gate 类型的服务用于负载均衡的话,我们只需要创建一个把connector 改为gate。第二级目录约定为handler,所有处理请求的js文件都放在该目录下面。entryHandler.js 这个文件为我们处理请求和响应的文件。以上规则就是我们在Pomelo 里面要响应对客户端请求的步骤。然后,我们只需要在配置文件上面做一些修改,Pomelo在启动的时候就会加载我们创建好的frontend了。(详情阅读声明使用Frontend和Backend)对于客户端而言只要在请求的时候对应以上规则即可阅读hello world项目 /public/index.html 大概19 -36行代码
pomelo.request("connector.entryHandler.entry", "hello pomelo", function(data) {
alert(data.msg);
假如我们常见了一个gate的 frontend 用于负载均衡我们在客户端只需要做如下修改就能进行对gate的访问了。
pomelo.request("gate.entryHandler.entry", "hello pomelo", function(data) {
alert(data.msg);
Backend的创建
└─testBackend
├─handler
└─ entryHandler.js
└─remote
└─testBackendremote.js
规则与frontend基本一致,不过多了一个remote目录,用于RPC 的处理。然后,我们只需要在配置文件上面做相关配置,pomelo在启动的时候就会加载我们创建好的Backend。(详情阅读声明使用frontend,backend)接着客户端如果要访问Backend 需要先连接接Frontend 再从回调中发起对Backend的访问。client -& frontend -& backend 这个过程不可越过
hello world项目 /public/index.html 大概19 -36行代码增加。
pomelo.request("connector.entryHandler.entry", "hello frontend", function(data) {
pomelo.request("testBackend.entryHandler.entry", "hello backend", function(data) {
alert(data.msg);
做了以上的修改以后,客户端就能对服务端的Backend发起请求并且响应。
配置Frontend和Backend##上面我们知道了如何在服务端创建Frontend,Backend规则,那么Pomelo如何加载我们的定义好的的frontend,和backend 呢?
要让pomelo 加载我们创建好的frontend和backend 需要在 ./game-server/config/servers.json 作以下修改。因为development与production的设置是一样的这里就以development为例
{ "development": {
"connector": [
"id": "connector-server-1",
"host": "127.0.0.1",
"port": 3150,
"clientPort": 3010,
"frontend": true
"testBackend": [
"id": "test-server-1",
"host": "127.0.0.1",
"port": 3151
Frontend配置说明
对于frontend 对象而言
"connector": [
"id": "connector-server-1",
"host": "127.0.0.1",
"port": 3150,
"clientPort": 3010,
"frontend": true
id 就是该frontend的在服务器的名字host 服务器的地址port 服务器的端口号clientPort 客户端用于连接的端口号frontend 是否是一个frontend
Backend配置说明###backend对象基本与frontend一致,只是少了面向客户端端口的声明
"testBackend": [
"id": "test-server-1",
"host": "127.0.0.1",
"port": 3151
id 就是该frontend的在服务器的名字host 服务器的地址port 服务器的端口号
添加服务器###对于Pomelo而言,添加服务器只需要在配置文件中作如下修改,这样我们就添加多了一台connector的服务器了,如果要添加一台backend服务器,也是一样的道理。
"connector": [
"id": "connector-server-1",
"host": "127.0.0.1",
"port": 3150,
"clientPort": 3010,
"frontend": true
"id": "connector-server-2",
"host": "127.0.0.1",
"port": 3151,
"clientPort": 3011,
"frontend": true
总结##今天,对于Pomelo的理解:
服务端如何进行请求响应。如何创建我们一个frontend或者backend。如何通过配置文件让pomelo加载我们的frontend和backend。
客户端客户端如何发起对backend请求。
资料来源##
其实很简单……在生产环境下用nginx做负载均衡会不会比gate好一些? - Pomelo Club
在生产环境下用nginx做负载均衡会不会比gate好一些?
参考<a href="/questions//
主要考虑原来demo代码
不知道两者还有没有什么优缺点没有考虑到
gate 只是demo中的例子 可以使用lvs,haproxy,nginx等负载均衡方案
好的~明白了
如果用户量大,当然是有类似nginx这种负载均衡方案会比较好
我们消息推送平台用的是lvs
准备有空了解下LVS,作个比较新手迷茫的pomelo之路 - Pomelo Club
新手迷茫的pomelo之路
有一天在网上闲逛的是时候,脑海忽然闪现一个关键字“游戏服务器”,果断google之。。(其实也不是偶然,因为当时就在做一个卡牌手游的服务器端,用的是php,当然也是水平有限+经验不足,做出的效果体验很差)其中一条“深入浅出node.js游戏服务器开发”的结果吸引了我,细看之后发现它讲的pomelo的一些特性很是cool。于是一路追寻,找到项目,看文档,部署demo,没接触过nodejs,也临时恶补了一番。(故事完)
现在回头,发现我除了配置成功了几个demo,在别人面前炫耀了一把外,就没了。。我开始茫然了,我在想下一步该怎么做,看源码吧,lordofpomelo很强大,也比较完整,但看起来都不知道从何下脚。于是选择了简单的chatofpomelo,小声的吐槽一下:“pomelo 源码阅读(X)系列、pomelo源码分析(X)系列”写的有点那个啥,难懂:-( 当然你们是无私奉献依然让我们后辈感激涕零。顺便推荐两篇我认为写得好懂点的文章,讲chat的:
疑惑:pomelo是不是什么都能做?支持很多类型的客户端,可文档很少!框架里game-server是服务器端,但web-server就有些奇怪了,它是个什么样的角色呢?是不是用了pomelo服务器端很好写,而客户端却不好写?pomelo适合做手游吗?
以上就是一个新手接触pomelo后的一些反馈,还望前辈们指点一二 OTZ
pomelo是服务器框架, 适合做各种类型的游戏和实时应用, 当然很适合做手游戏。
客户端跟pomelo没关系,所以不存在好不好写的问题。
web-server可以认为是HTML 5游戏的客户端,如果做移动游戏可以忽略之
不能说跟客户端没关系吧,要和服务器交互,还是有很多约定什么的吧,感觉一些客户端的库没有跟上服务器的节奏
lordofpomelo游戏可以拿这个 做引子
有个完整的例子确实不错,不过只有html5的
都是一步一步过来了,自己要多看,多问,多想
恩 一步一步
服务器根目录的名字必须叫“game-server”,略感蛋疼
还有 创建个项目附带一个web-server, 还有 安装完依赖包就变40+m了
一步一个坑一步一个坑。。。。
pomelo适合做demo,其服务器的很多架构思想是精华值得学习借鉴。如果做产品,基本上你得看n久的源代码和自我学习,加上自己对pomelo的一些模块补充和替换。当你做完以上两点以后,基本上你的武功已经可以自成一派了,最后融合各种顶尖的nodejs其它开源库,组合成你自己的框架和服务器。最后总结,pomelo从技术的角度是个好东西,就我个人而言,也受益匪浅。

我要回帖

更多关于 pomelo gate 的文章

 

随机推荐