利用工作之余,自己尝试学习一下游戏服务端开发, 由于之前主要使用quick-cocos,所以对lua还比较熟悉,外加师傅的推荐,决定学习下云风大神的skynet服务端框架。
skynet的git地址:
参照readme,需要先编译
在框架根目录运行:make 设备名 由于我的是mac环境,输入make macosx 具体的设备名在readme中有写
编译完成之后就可以试着运行例子了,首先启动服务器,skynet服务启动的时候需要传入config文件,config文件为服务启动时的一些参数设置,具体每个参数的含义skynet的wiki文档上有:
https://github.com/cloudwu/skynet/wiki/Config
用终端在skynet目录下运行./skynet confg文件地址 例如:./skynet examples/config 就启动了skynet的服务端程序,
之后再启动例子里面的客户端:./3rd/lua/lua examples/client.lua 就可以看到客户端和服务端的连接成功了。
以下是自己写的一段服务端测试代码:
local skynet = require("skynet")local socket = require("socket")skynet.start(function () local id = socket.listen("0.0.0.0",8888) socket.start(id,function(id,address) print("我是服务端,我接收到了你的请求") print("id:" .. id) print("address:" .. address) socket.start(id) print("你的请求的package内容为:" .. socket.read(id)) end)end)
下面是客户端代码:(其中需要lua文件路径根据目录不同自行更改)
package.cpath = "luaclib/?.so"package.path = "lualib/?.lua;examples/?.lua"local socket = require("clientsocket")local fd = assert(socket.connect("127.0.0.1", 8888))socket.send(fd, "hello world")
将config中的start参数改为自己服务端代码的lua文件名,就可以通过skynet命令启动服务了,之后再通过lua命令启动客户端就可以调试了。