乐趣区

关于typescript:白鹭游戏引擎网络棋牌搭建步骤

前言

我的项目是一个游客登录型的棋牌联网游戏,前端是白鹭引擎,后端 PHP 开发。分为登录和获取根本信息的 Http 层和 websocket 通信的游戏层。后盾须要有一个分布式网关服务器(php 游戏网关)。以下为了搭建更快捷,应用宝塔进行操作,前提曾经通过宝塔装置结束了 LNMP。

步骤

下载完源码地址的源码,解压失去以下四个目录,别离的用处见标注。

 2. EgretWing 工具导入 client 中的代码,web 整个文件夹的代码放入服务器 (我是本地应用 VM 搭的 centOS 虚拟机)。3. 宝塔中的应用的 PHP 装置 yaf 扩大,重启 PHP 后拜访查看 phpinfo() 可能找不到 yaf

 4. 通过宝塔的创立网站增加 web 中的代码,使得能通过域名申请到 web 目录下的 api.php 就行。次要是三个接口,别离返回登录信息,websocket 的地址和端口,图片代理等。

  1. 代码 client 文件中的代码批改”src/scene/Login.ts”的 onLoginTouch 办法中申请网络接口为下面 web 中配置的域名,”src/Main.ts”中的 initGame 办法同样批改网络申请地址为下面 web 配置的域名。接口别离是昵称和登录 token,另一个是 websocket 地址和端口。
  2. 下载下面的 Fooking 的源代码,并将代码放入服务器中,目录构造如下。

     7. 关上服务器命令面板,cd 进入 fooking 目录(以我的为例,名字能够自定义)。而后 make 进行编译。Src 目录中多出后缀为 0 的文件,面板也会显示编译完结。

     8. 关上 fooking 目录下的 router.lua 文件。PROT 能够自行定义,确定下了这个端口,我的是 8015。就须要在 centOS 防火墙中对其放行,宝塔是间接点击平安增加 8015 进行放行。

     9. 仍然是同级目录,关上 config.lua 文件,端口就是游戏中 webscket 进行连贯的端口。次要配置的有路由服务器地址(下面 router 设置的端口和地址),后端服务器列表的“BACKEND_SERVER”,以及 fastcgi params,配置标注如下。

-- 监听 IP 和端口
HOST = "0.0.0.0";
PORT = 9005;

-- 守护进行
--DAEMONIZE = 1;

-- 日志文件(为空则不输入日志,stdout- 输入到规范输入上, 其它则按文件解决)
LOG_FILE = "stdout";-- 间接屏幕打印
--LOG_FILE = "/tmp/fooking-gateway.log";-- 输入到文件

--1: 仅 error
--2: error 与 info
--3: 所有
LOG_LEVEL = 3;

-- 是否路由服务器(0- 否, 1- 是)
-- 如果是路由,ROUTER 以下的配置将被疏忽)
ROUTER = 0;

-- 服务器 ID
SERVER_ID = 1;

-- 工作过程
WORKER_NUM = 2;

-- 最大连接数
MAX_CLIENT_NUM = 10000;

-- 缓冲区大小
MAX_BUFF_SIZE = 4096;

-- 路由服务器
ROUTER_HOST = "192.168.234.128";
ROUTER_PORT = 8015;

--SSL 配置
--SSL = 1
--SSL_CERT = "/tmp/cert.pem"
--SSL_PKEY = "/tmp/pkey.pem"

-- 指定工夫内连贯没有数据包申请,将会踢掉连贯(单位秒), 为 0 不解决
IDLE_TIME = 0;

-- 脚本
SCRIPT_FILE = "../scripts/Websocket.lua";

-- 后端服务器列表
BACKEND_CONNECT_TIMEOUT = 5;-- 连贯超时工夫(单位秒)
BACKEND_READ_TIMEOUT = 10;-- 数据接管超工夫(单位秒)
BACKEND_KEEPALIVE = 10;-- 最大维持长连贯数量
BACKEND_SERVER = {["unix:/tmp/php-cgi-73.sock"] = 5,-- 第一列是 socket 选项,第二列是权重(跟 nginx 的 upstream 差不多一个意思)
};

-- 新连贯是否告诉(0- 不告诉, 1- 告诉)
-- 申请头会有 EVENT=1
EVENT_CONNECT = 0;

-- 敞开连贯是否告诉(0- 不告诉, 1- 告诉)
-- 申请头会有 EVENT=2
EVENT_CLOSE = 1;

--fastcgi params
FASTCGI_PREFIX = "";--go 下要应用 HTTP_作为前缀,否则拿不了 SESSIONID 和 EVENT
FASTCGI_ROOT = "/www/wwwroot/san_zhang_pai/server/";-- 必须以 / 结尾
FASTCGI_FILE = "server.php";
FASTCGI_PARAMS = {["SERVER_SOFTWARE"] = "fooking",
    ["SERVER_PROTOCOL"] = "HTTP/1.1",
    ["GATEWAY_INTERFACE"] = "CGI/1.1",
    ["REQUEST_METHOD"] = "POST",
    ["SCRIPT_FILENAME"] = FASTCGI_ROOT..FASTCGI_FILE,
    ["SCRIPT_NAME"] = FASTCGI_FILE,
    ["DOCUMENT_ROOT"] = FASTCGI_ROOT,
    ["SERVER_NAME"] = "server.yafgame.com/",
    ["QUERY_STRING"] = "a=10&b=20",
};
  1. 启动 router.lua。Cd src,而后./fooking ../router.lua
  1. 查看 php-fpm 配置文件办法,命令输出, ps -ef | grep fpm。能够看到 php-fpm 的配置文件。
  2. 找到并关上 php-fpm.conf 文件,能够看到监听的通信办法以及通信的具体地址,还有 fpm 的谬误日志寄存地址。宝塔 Nginx 与 fpm 默认是以 unix socket 办法,如果 fpm 批改成了 tcp,那 nginx 也要批改。

     13. 查看 fpm.conf 后与 fooking 的 config 设置结束后,就能够开始启动 config 了。Cd fooking, 而后./fooking ../config.lua。

    如果呈现 Can’t found available backend server, Please check BACKEND_SERVER,多是因为 config 的后端配置填的通信形式与 fpm 的不统一。其余的就是 FASTCGI_ROOT 没填对地址。

     14. 最初关上 EgretWing 导入的 client 中的源码,点击调试,弹出游戏界面,登录后失常的话就会进入游戏界面了。

 Fooking 分布式游戏服务器网关结构图 –

  1. 启动的 config.lua 呈现“stream_socket_client(): unable to connect to tcp://127.0.0.1:9010”时,批改 server 的“config”中的 router,IP 和端口换成 router.lua 中配置启动的地址和端口。
  2. 批改 server 的 redis 中的为本人装置的地址和端口,web 的 api/api/api/include/config.inc.php,批改 redis 地址和微信公众号 APPID 等地址。
退出移动版