skynet教程1

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)

你可能感兴趣的:(skynet)