Pomelo 的 Hello World
老传统,让我们也先从 hello world 这个例子开始吧。新建项目
使用 pomelo 的命令行工具可以快速创建一个项目,命令如下:$ pomelo init ./HelloWorld
或者你也可以使用下面的三个命令:
$ mkdir HelloWorld
$ cd HelloWorld
$ pomelo init
这两种创建方式是等价的,更多关于 pomelo 命令行使用的文档,请参阅pomelo 命令行工具使用 。在初始化项目的时候,用户需要选择其底层使用的通信协议,分为 socket.io 和 websocket。然后,进入到 HelloWorld 文件夹,安装依赖包:
$ sh npm-install.sh
Windows 用户,可以直接运行 npm-install.bat。
项目目录结构
让我们来看看一个 pomelo 项目的大致结构新建立的项目结构如下图所示:

该目录结构很清楚地展示了游戏项目的前后端分层结构,分别在各个目录下填写相关代码,即可快速开发游戏。下面对各个目录进行简要分析:
game-server
game-server 是用 pomelo 框架搭建的游戏服务器,以文件 app.js 作为入口,运行游戏的所有逻辑和功能。在接下来的开发中,所有游戏逻辑、功能、配置等都在该目录下进行。- app 子目录:
这个目录下放置所有的游戏服务器代码的地方,用户在这里实现不同类型的服务器,添加对应的Handler,Remote等等。 - config 子目录:
game-server 下 config 包括了游戏服务器的所有配置信息。配置信息以 JSON 文件的格式进行定义,包含有日志、master、server 等服务器的配置信息。该目录还可以进行扩展,对数据库配置信息、地图信息和数值表等信息进行定义。总而言之,这里是放着所有游戏服务器相关的配置信息的地方。 - logs 子目录:
日志是项目中不可或缺的,可以对项目的运行情况进行很好的备份,也是系统运维的参考数据之一,logs存放了游戏服务器所有的日志信息。
shared:
shared 存放一些前后端、game-server 与 web-server 共用代码,由于都是 javascript 代码,那么对于一些工具或者算法代码,就可以前后端共用,极大地提高了代码重用性。web-server:
web-server 是用 express 3.x 框架搭建的 web 服务器,以文件 app.js 作为入口,当然开发者可以选择 nginx 等其他 web 服务器。如果游戏的客户端不是 web 的话,如 android 平台的话,这个目录就不是必须的了。当然,在这个例子中,我们的客户端是 web,所以 web 服务器还是必须的。启动项目
对于我们这个例子来说,由于客户端是 web,所以必须启动 game-server(游戏服务器)和 web-server(web 服务器)启动game-server服务器:
$ cd game-server
$ pomelo start
启动 web-server 服务器:
$ cd web-server
$ node app
在启动过程中可能会有端口号冲突导致启动不成功,只需在 config 里面修改使用的端口号即可。如果上面的启动都没有问题的话,我们就可以对我们的 HelloWorld 进行测试了。用浏览器(推荐使用chrome)访问 http://localhost:3001 或者 http://127.0.0.1:3001 即可, 点击 Test Game Server,提示 game server is ok 说明运行成功,如下图所示:
查看服务器
可以使用 pomelo list 查看已经启动的服务器,如下图所示:
服务器状态可以查看 5 种状态信息:
- serverId:服务器的 serverId,同 config 配置表中的 id
- serverType:服务器的 serverType,同 config 配置表中的 type
- pid:服务器对应的进程 pid
- heapUsed:该服务器已经使用的堆大小(单位:兆)
- uptime:该服务器启动时长(单位:分钟)
关闭项目
可以使用以下两种方式关闭项目:$ cd game-server
$ pomelo stop
或者
$ cd game-server
$ pomelo kill
其中 pomelo stop 比较优雅,pomelo kill 比较粗暴,安全性低,开发环境下可以使用,产品环境慎用,更详细的 pomelo 命令行用法请参阅 pomelo 命令行工具 使用。