1.git clone https://github.com/cloudwu/skynet.git
2. moke linux
3.编译完成后会有一个skynet可执行文件生成在skynet目录下
4.启动./skynet ./examples/config
5.ctrl+z退出,进入3rd/lua目录 运行:make linux,编译lua,生成两个可执行文件lua和luac。
注意这个地方报错:lua.c:83:31: fatal error: readline/readline.h: No such file or directory
yum install libreadline-dev
6.ps -ef|grep skynet kill -9 杀死这个进程
7.重新启动服务器./skynet ./examples/config
8.WinSCP客户端启动一个控制台:输入3rd/lua/lua examples/client.lua
编译与运行skynet服务器
$ cd skynet #今后我们所有的工作都在这个目录中进行
$ make linux
#如果报错:
./autogen.sh: 5: ./autogen.sh: autoconf: not found
#安装autoconf
$ sudo apt-get install autoconf
yum install libreadline-dev
#如果报错:
lua.c:83:31: fatal error: readline/readline.h: No such file or directory
yum install libreadline-dev
skyet/example/echo.lua
第一步:
local skynet = require "skynet"
require "skynet.manager"
local command = {}
function command.HELLO(what)
return "i am echo server, get this:" .. what//第8步
end
skynet.start( //第3步 skynet.newservice的时候执行
skynet.register("echo");//第4步
skynet.dispatch("lua", function(session, address, cmd, ...)//第6步
cmd = cmd:upper()
if cmd == "HELLO" then
local f = command[cmd]
assert(f)
skynet.ret(skynet.pack(f(...)))//第7步
end
end)
);
第二步:
skynet/example/test_echo.lua
local skynet = require "skynet"
skynet.start(function() //第1步 skynet.start()用于服务的入口,加载lua服务时先运行这里的代码
local echo = skynet.newservice("echo")//第2步 skynet.newservice是启动echo服务。就是上面skynet.register("echo")
print(skynet.call(echo, "lua", "HELLO", "world"))//第5步 echo:address "HELLO":cmd "world"对应的...
end);
启动:test_echo.lua
1.修改配置文件example/config,在源码分析中分析过了,skynet一定需要一个配置文件,在里面配置cpath/thread之类的信息。先备份一下example/config文件。然后再个性example/config文件,把start那一行
2.start = "main" 改为 start = "test_echo"这样就启动了test_echo中skynet.start方法。
3.skynet.newservice是启动echo.lua服务。就是上面skynet.register("echo")
4.skynet.call是调用服务其中参数echo就是上面dispatch对应的address
skynet.start(1)
|
skynet.newservice(2) ------ 执行echo.lua中skynet.start(3)
|
skynet.call(4) ------- 执行echo.lua中skynet.dispatch(5)