skynet redis mysql_GitHub - bitloo/YKServerBySkynet: 一个skynet+mysql+redis服务器架构

skynet服务器框架说明

架构相关

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相关脚本

service 服务脚本

skynet skynet框架核心代码和源码

log 日志文件

start_ykserver_gate.sh 这个是启动脚本使用screen启动

test.sh 控制台运行服务器

打包.bat 编译lua文件

框架特殊文件说明

socket包封装解析protoUtil

处理客户端的连接wsgateserver.lua

对客户端的消息进行分发distributeClientMsg

客户端会话管理gamesession

怎么编写一条HTTP协议

编写Http 例如编写一个账号登陆 首先在 httpser这个文件夹下新建一个文件夹

然后新建一个用来处理账号登陆的lua类

那么结构是1542035818146.png

这个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中加修改mode1542036421603.png

接下来访问 ip:9100/?modeName="模块名称(这里就是modes里面填的)"&api=函数名称&参数1=值&参数n=值

最终 ip:9100/?modeName=account&api=createaccount&account=1234567&pwd=123456

代码请参考 sergate/httpser/handlerAccount.lua

编写一条wssocket 消息

新增一个文件夹放在 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

启动

配置服务器数据库账号密码

1542038237332.png

然后sh test.sh

使用 来创建账号 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 直接在控制台启动,这样就可以看到启动失败的原因

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值