原文网址:https://www.youyong.top/article/1159af64a75e4
初识Polemo
简介
Pomelo是网易的游戏服务端框架,虽说是游戏服务端框架,但是它的很多核心跟通俗的应用服务端是通用的。pomelo是基于Node.JS封装的,具有天生的多进程分布式特征。
安装Node.JS
在安装Pomelo之前需要全局安装Node.JS,Node.JS的下载链接是:
根据系统找到对应的版本进行下载安装即可(具体的可以自己上网搜索下Node.JS相关的博客或者教程里面都有)。
安装Pomelo
安装好node之后,可以使用 npm (node包管理工具)全局安装 pomelo:

如果安装node.JS后配置了cnpm,那么可以使用 cnpm 来安装:

如果安装过程中没有报错误,说明安装成功。
新建项目
新建一个空文件夹HelloWorld,cd到文件夹下,执行 init 命令:


执行init命令的时候,控制台光标会停在这个位置,需要选择网络连接方式:
1:websocket
2:socket.io
3:wss
4:socket.io(wss)
5:udp
6:mqtt
可以根据实际项目情况选择需要的网络连接方式,现在我们可以选择了 1。
其实,对于 websocket 还是 socket.io,pomelo 都提供了相同的API进行操作。
安装依赖
pomelo是基于node.js的工程,所以不可避免的会需要用到一些node.js的包,我们需要在项目下安装node.js的依赖包。
mac OSX下,我们可以在终端执行:

windows下,我们需要在终端运行 npm-install.bat 批处理文件:

如果配置了cnpm,那么我们可以打开对应的npm-install脚本,修改里面的npm命令为对应的cnpm,然后保存关闭后再执行。
安装成功后,在项目的game-server和web-server下都会多出一个node_modules文件夹,里面就是刚刚安装的依赖包。
在新建项目的目录下有三个文件夹,分别是:game-server、web-server和shared。
shared
由于JS的各方面条件,现在很多的游戏客户端也采用JS进行开发,而pomelo也是基于JS的,所以有些算法、或者功能模块是可以被服务端和客户端所共用的。这部分代码就可以放置在shared目录下,这样充分体现了pomelo所提倡代码高重用性。
web-server
web-server是一个网页客户端目录,里面存放的是web客户端的代码,以app.js为入口文件。这里我们不做过多的阐述。
game-server
这里面就是使用pomelo框架开发的游戏服务端的代码。在game-server下有app、config和logs三个文件夹,还有刚刚安装的node_modules。项目同样以app.js为入口文件。
【在config里面,多了一个adminServer.json文件,如果我们有新增服务端类型(比如:gate服务器),需要在这里配置token信息,否则会一直显示注册服务器到master失败。token可以自定义,或者生成一个足够长的字符串即可,甚至可以多个服务端公用一个token,主要取决于对项目安全性的要求。】
运行项目
运行game-server的命令如下:

运行web-server的命令如下:

如果运行过程中提示端口冲突,我们修改config下的server.json文件中的端口和web-server/public/index.html中对应的端口即可。
启动客户端
由于HelloWorld是一个web客户端,所以当启动web-server后,在浏览器访问对应的页面即可。
制作定时任务可以使用cron来实现,具体的可以网上搜索“cron定时任务”。这里介绍在Pomelo中如何实现定时任务。编写任务
在项目game-server/app/servers下面新建一个“servertask”文件夹(文件夹名称任意),在servertask下新建一个“cron”文件夹,在cron文件夹下新建一个名为“servertaskCron.js”的代码文件,servertaskCron代码如下:

添加定时任务服务器配置
在game-server/config/servers.json中添加servertask的服务器配置:

添加服务器token
在新版本的Pomelo中,config目录下新增了一个adminServer.json配置,在里面添加一个servertask的配置,否则启动servertask的时候会提示注册服务器到master失败。

token字段的值可以任意,用一个足够长的字符串或者所有服务器公用一个token也行,主要取决于你的服务器安全级别。
添加cron配置
在game-server/config目录下新建一个“crons.json”文件,配置如下:

id是定时任务在具体服务器的唯一标识,且不能在同一服务器中重复。
time是定时任务执行的具体时间,时间的定义跟linux的定时任务类似,一共包括7个字段,每个字段的具体定义如下:
"* * * * * * [command]"
action是具体执行任务方法,servertaskCron.clrearEveryDayTaskDatas则代表执行game-server/app/servers/servertask/cron/servertaskCron.js中的clearEveryDayTaskDatas方法。
定时任务时间定义格式
"* * * * * * [command]"
"秒 分 时 日 月 星期 [运行命令,可省略]"
秒的取值范围[0, 59]。
分的取值范围[0, 59]。
时的取值范围[0, 23]。
日的取值范围[1, 31]。
月的取值范围[0, 11]。
星期的取值范围[0, 6],0表示星期天。
*:表示任何时刻
,:表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n: 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
【在Pomelo里面用/1报错,改成0/1就可以了】*

不少人问Creator 是否能集成 pomelo,根据个人理解:Cocos Creator 实现了websocket的跨平台封装;而 pomelo 也有基于websocket的客户端实例。因此,Cocos Creator 集成pomelo应该不会有什么大问题。感兴趣的朋友可以参考本文以及之前教程:如何在Cocos Creatorv1.5中集成Pomelo,有任何问题欢迎留言共同探讨。
原文网址:https://www.youyong.top/article/1159af64a75e4