Cocos creator(JavaScript)+pomelo简单测试

简介

Pomelo:一个快速、可扩展、Node.js分布式游戏服务器框架。
本文讲述如何实现一个简易的分布式聊天应用。为了简单化,我们将直接从gitee(码云)上获取对应的源码,或者先使用pomelo init,获得一个初始的项目目录,然后参照gitee(码云)上的源码,建立相应的目录,在默认的位置填充相应的源码。

服务端

源码结构介绍

game-server文件夹
game-server目录放的是所有游戏服务器的逻辑,以文件game-server/app.js作为入口,运行游戏的所有逻辑和功能。

servers文件下有三个目录,分别是 chat、connector、gate。在 pomelo中,使用路径来区分服务器类型,因此三个目录代表了三种不同类型的服务器。每一个目录下面可以定义handlerremote来决定这个服务器的行为。不了解Pomelo中的术语,不分别解释,可查看学习

  • gate服务器: 在一般情况下用户量一台机器就可以支撑,但用户量多了就得扩充服务器,gate服务器的作用就相当于前端负载均衡服务器;逻辑代码在gateHandler.js中,它接受客户端向gate服务器发出查询connector的请求,返回给客户端一个可以连接的connector的服务器(ip,port)。分配策略是根据客户端的某一个key做hash得到connector的id,这样就可以实现各个connector服务器的负载均衡;
  • connector服务器: 逻辑代码在entryHandler.js中,它主要完成接受客户端的请求,路由客户端的请求到chat服务器,维护与客户端的连接; connector服务器会同时拥有clientPort和port,其中clientPort用来监听客户端的连接,port端口用来给后端提供服务;
  • chat服务器: handler和remote决定了服务器的行为。handler中处理用户的send请求,而remote是当有用户加入或退出时,由connector来发起远程调用时调用的。由于在remote里涉及到用户的加入和退出,所以会有对channel的操作。

game-server/config: 游戏服务器所用到的配置文件存放的位置,配置信息使用JSON格式,包含有日志,master服务器和其他服务器的配置信息。除了这个pomelo所需的配置信息外,一般情况下,也将游戏逻辑所需要的配置信息放到这个目录下,例如数据库的配置信息,地图信息等。

game-server/logs: 存放游戏服务器产生的所有的日志信息。

web-server
web服务器,如果你是个H5游戏,这里就是Web客户端,如果是IOS、Andriod客户端,这目录就没什么用。
shared
公共代码存放处,这里要以放一些共用代码

安装Pomelo

Windows下需要的环境支持

本文提供下载地址: node.jsVS2010Python,若以上地址失效可自行到百度查找下载。

1. NodeJS(本文使用V12.15.0,最新版本可能报错)

windows下默认安装.msi后缀的包,检验是否安装好cmd下,输入node -v,显示版本号说明安装成功。

2. C++编译环境(直接安装VS2010)

不想装vs2010这类占10G硬盘空间的东西,直接npm install --global --production windows-build-tools,需要大约一共2G左右

3. Python(建议使用2.7.3, 2.5 < 版本 < 3)

windows下默认安装.msi后缀的包,检验是否安装好cmd下,输入python --version,显示版本号说明安装成功(若安装报错可查看处理)。

安装Pomelo

1.npm安装pomelo: 安装完nodejs后,会自动安装上npm,可以通过npm来安装pomelo。但是国内npm可以使用cnpm来安装,命令行:npm install pomelo -g;
2.通过下载源代码的方式安装: $ git clone https://github.com/NetEase/pomelo.git
$ cd pomelo;
$ npm install -g;
3.npm install 无响应:
可参考:npm install慢/无响应解决方案

查看pomelo是否安装完成: 可用命令行:pomelo -h 来查看pomelo是否安装完成。

创建项目(可省略 使用下载的项目)

  1. 新建一个项目目录 ProjectName;
  2. 打开cmd, 使用cd ProjectName 进入该目录 执行 pomelo init;
  3. 运行生成的文件npm-install.bat。 (其它平台执行npm-install.sh)

运行项目

启动游戏服务器方法:

$ cd game-server
$ pomelo start

在这里插入图片描述

报错解决方法

若执行后,出现如下 错误提示:

[2017-11-23 11:54:42.226] [ERROR] console - Option path is not valid. Please refer to the README.
[2017-11-23 11:54:42.226] [ERROR] console - Option close timeout is not valid. Please refer to the README.
[2017-11-23 11:54:42.226] [ERROR] console - Option heartbeats is not valid. Please refer to the README.
[2017-11-23 11:54:42.226] [ERROR] console - Option log level is not valid. Please refer to the README.

问题原因: 新版的socket.io用法不正确的导致的,官方早已修复,就是没有publish到npm包中;
解决方式: 把node_modules目录下的pomelo中sioconnector.js(…/game-server/node_modules/pomelo/lib/connectors/sioconnector.js)替换为 gitee(码云)地址下载github地址下载

启动web服务器方法:

$ cd web-server
$ node app.js

在这里插入图片描述

示例下载

https://gitee.com/ls_qq2670813470/chatofpomelo_websocket

客户端

本文提供了两个版本,分别是
https://gitee.com/ls_qq2670813470/ccc_pomelo_chat_client_A
在这里插入图片描述
https://gitee.com/ls_qq2670813470/ccc_pomelo_chat_client_B
在这里插入图片描述
两个版本都是在一个基础上修改。

发布了8 篇原创文章 · 获赞 5 · 访问量 560

猜你喜欢

转载自blog.csdn.net/qq_14965517/article/details/104373339