- mysql 备份数据库 + redis运行时数据库
- websocket + hhtp协议
- c语言核心lua语言写业务逻辑
- Skynet为框架核心
- ykserver
服务器逻辑代码
- config
配置文件
- global
全局使用脚本
- lualib
一些公用的lua服务
- protos
服务器协议文件
- sercenter
中心服务 (暂时用不上,多服务架构用)
- sergate
网关服务器 暂时所有服务器都放在网关服
- authser
登陆相关的服务
- chatserver
聊天服务
- dbserver
数据库管理服务
- httpser
http服务以及http相关服务
- test
测试目录
- main.lua
服务器最早启动的服务
- ykwsgate.lua
websocket相关脚本
- authser
- service
服务脚本
- skynet
skynet框架核心代码和源码
- config
- log
日志文件
- start_ykserver_gate.sh
这个是启动脚本使用screen启动
- test.sh
控制台运行服务器
- 打包.bat
编译lua文件
socket包封装解析protoUtil 处理客户端的连接wsgateserver.lua 对客户端的消息进行分发distributeClientMsg 客户端会话管理gamesession
编写Http 例如编写一个账号登陆 首先在 httpser这个文件夹下新建一个文件夹 然后新建一个用来处理账号登陆的lua类 那么结构是 这个handlerAccount就是新的处理协议类 比如我们想要写一个创建账号createaccount 那么久在这个文件里面写
local this = {} ---@param query 这个是请求的参数是个tabel表 ---@param body 这个是post请求的参数是个tabel表 ---@param header 这个是请求的头部信息 function this.createaccount(query,body,header) ---编写你的逻辑代码 local ec,retData = errorCode.SystemError.unknow,nil --- ec就是你要返回给客户端的错误代码 retData就是数据直接返回table就行会自动转成json return ec,retData end
最后配置下协议 httpagent中加修改mode 接下来访问 ip:9100/?modeName="模块名称(这里就是modes里面填的)"&api=函数名称&参数1=值&参数n=值 最终 ip:9100/?modeName=account&api=createaccount&account=1234567&pwd=123456 代码请参考 sergate/httpser/handlerAccount.lua
新增一个文件夹放在 sergate下,然后对照下面的authser main为必须叫这个名字 service.modules.auth = require("impl") 注册 auth模块
function this.login(gs,loginReq) local ec,data = errorCode.SystemError.unknow,nil if not loginReq then return ec end local token = loginReq.token local roleid = loginReq.roleid ec,data = ctrl.login(gs,token,roleid) return ec,data end
然后配置下protomap文件
local auth = { module = "auth", service = serviceNames.auth, server = serverType.GATE, login = { id = 200, request = "loginReq", response = "loginResp", log = 2, desc = "请求登陆", needAuth = false }, } this.auth = auth
使用 来创建账号 ip:9100/?modeName=account&api=createaccount&account=1234567&pwd=123456
先确保dbserver/cfg.lua 里面的配置是你想要发布到的服务器的数据库配置 如果确保无误 执行根目录下的 发布.bat 执行的过程注意看下错误,如果有错误看看是不是因为你系统是32位的,自行替换luac.exe 现在用的是luac5.3.5 luac
如果一切顺利应该会在根目录生成一个release的文件夹 里面有个pack的文件夹就是你打包后的文件 把这个pack上传到服务器上,然后给 所有的sh附上 可执行权限 (chmod +x ./*.sh) 然后再给skynet可执行文件执行权限 chmod +x ./skynet/bin/liunx/skynet
一切顺利后执行 sh start_ykserver_gate.sh
注意:需要先安装screen
如果启动失败可以先 sh test.sh 直接在控制台启动,这样就可以看到启动失败的原因