运行架构
- 客户端通过websocket长连接连到connector服务器群。
- connector负责承载连接,并把请求转发到后端的服务器群。
- 后端的服务器群主要包括按场景分区的场景服务器(area)、聊天服务器(chat)和状态服务器等(status), 这些服务器负责各自的业务逻辑。真实的案例中还会有各种其它类型的服务器。
- 后端服务器处理完逻辑后把结果返回给connector, 再由connector广播回给客户端。
- master负责统一管理这些服务器,包括各服务器的启动、监控和关闭等功能。
架构抽象
前端服务器(frontend)的职责:
- 负责承载客户端请求的连接
- 维护session信息
- 把请求转发到后端
- 把后端需要广播的消息发到前端
后端服务器(backend)的职责:
- 处理业务逻辑, 包括RPC和前端请求的逻辑
- 把消息推送回前端
安装
npm i pinus -g // 安装在全局
npm i pinus --save // 安装在应用
使用pinus的命令行工具可以快速创建一个项目,命令如下:
$ pinus init ./demo
或者
$ mkdir demo
$ cd demo
$ pinus init
安装依赖包
$ sh npm-install.sh
或windows 直接运行 npm-install.bat
game-server
game-server是用pinus框架搭建的游戏服务器,以文件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服务器还是必须的。
启动:
windows需要安装下载模块到node_modules
cd game-server
npm i 或者 npm install
编译game-server服务器:
$ cd game-server
$ npm run build
启动game-server服务器:
$ cd dist
$ pinus start
启动web-server服务器:
$ cd web-server
$ node app
关闭项目
windows关闭命令窗口就行
$ cd game-server/dist
$ pinus stop
或者$ cd game-server/dist
$ pinus kill
Pinus官网中文地址: