Skynet基础入门例子详解(1)
2017-03-16 18:11
204 查看
Skynet 是一个轻量级的为在线游戏服务器打造的框架,它也不仅仅使用在游戏服务器领域。
Skynet开源项目地址:
https://github.com/cloudwu/skynet
云风大神博客:
http://blog.codingnow.com/
Wiki文档:
https://github.com/cloudwu/skynet/wiki
阅读Wiki文档,如果你是菜鸟,会感觉一脸懵逼。
文档并没有像一般的入门教程那样一步一步教你操作,入门例子代码也是一大块,包含好几个文件,让你看起来抓狂(除非你不是菜鸟)。Wiki文档大部分都是讲述概念,如LuaAPI只是列出各个函数的定义,基本没有入门例子。整体上说就是一个API定义文档,对于不熟悉skynet工作原理的同学很难理解。
本系列文章主要是记录本人在学习过程中遇到的问题,并以最基础的代码引导和我一样的菜鸟入门。
对skynet工作原理的同学可先看看风哥的视频:
腾讯大讲堂:基于 Actor 模式的开源框架
http://gad.qq.com/content/coursedetail?id=467
或者看下这篇文章:
https://github.com/cloudwu/skynet/wiki/GettingStarted
skynet安装可以看这里:
http://blog.csdn.net/uisoul/article/details/62418010
我这里是skynet安装目录下的:myexample/e1/
config配置(examples例子里面的照抄,修改一下目录)
main.lua代码:
service1.lua代码:
运行程序:
代码讲解:
从这个例子可以看出skynet的基本工作原理
skynet使用newservice创建各种独立的服务,这就是云风大神提到的沙盒。
为每个服务创建沙盒,各个服务独立运行,互不影响。
各个服务之间可以相互调用,调用方法后面再说。
项目源码:http://download.csdn.net/detail/uisoul/9789542
参考API文档:
https://github.com/cloudwu/skynet/wiki/LuaAPI
Skynet开源项目地址:
https://github.com/cloudwu/skynet
云风大神博客:
http://blog.codingnow.com/
Wiki文档:
https://github.com/cloudwu/skynet/wiki
阅读Wiki文档,如果你是菜鸟,会感觉一脸懵逼。
文档并没有像一般的入门教程那样一步一步教你操作,入门例子代码也是一大块,包含好几个文件,让你看起来抓狂(除非你不是菜鸟)。Wiki文档大部分都是讲述概念,如LuaAPI只是列出各个函数的定义,基本没有入门例子。整体上说就是一个API定义文档,对于不熟悉skynet工作原理的同学很难理解。
本系列文章主要是记录本人在学习过程中遇到的问题,并以最基础的代码引导和我一样的菜鸟入门。
对skynet工作原理的同学可先看看风哥的视频:
腾讯大讲堂:基于 Actor 模式的开源框架
http://gad.qq.com/content/coursedetail?id=467
或者看下这篇文章:
https://github.com/cloudwu/skynet/wiki/GettingStarted
skynet安装可以看这里:
http://blog.csdn.net/uisoul/article/details/62418010
最简单的入门例子:
同目录创建3个文件(config,main.lua,service1.lua)我这里是skynet安装目录下的:myexample/e1/
config配置(examples例子里面的照抄,修改一下目录)
root = "./" thread = 8 logger = nil logpath = "." harbor = 1 address = "127.0.0.1:2526" master = "127.0.0.1:2013" start = "main" -- main script bootstrap = "snlua bootstrap" -- 启动的第一个服务以及其启动参数 service/bootstrap.lua standalone = "0.0.0.0:2013" luaservice = root.."service/?.lua;"..root.."myexample/e1/?.lua" lualoader = root .. "lualib/loader.lua" lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua" lua_cpath = root .. "luaclib/?.so" -- preload = "./example1/preload.lua" -- run preload.lua before every lua service run snax = root.."example1/?.lua;"..root.."test/?.lua" -- snax_interface_g = "snax_g" cpath = root.."cservice/?.so" -- daemon = "./skynet.pid"
main.lua代码:
local skynet = require "skynet" -- 启动服务(启动函数) skynet.start(function() -- 启动函数里调用Skynet API开发各种服务 print("======Server start=======") -- skynet.newservice(name, ...)启动一个新的 Lua 服务(服务脚本文件名) skynet.newservice("service1") -- 退出当前的服务 -- skynet.exit 之后的代码都不会被运行。而且,当前服务被阻塞住的 coroutine 也会立刻中断退出。 skynet.exit() end)
service1.lua代码:
-- 每个服务独立, 都需要引入skynet local skynet = require "skynet" -- 这里可以编写各种服务处理函数 skynet.start(function() print("==========Service1 Start=========") -- 这里可以编写服务代码,使用skynet.dispatch消息分发到各个服务处理函数(后续例子再说) end)
运行程序:
./skynet ./myexample/e1/config
代码讲解:
从这个例子可以看出skynet的基本工作原理
skynet使用newservice创建各种独立的服务,这就是云风大神提到的沙盒。
为每个服务创建沙盒,各个服务独立运行,互不影响。
各个服务之间可以相互调用,调用方法后面再说。
项目源码:http://download.csdn.net/detail/uisoul/9789542
参考API文档:
https://github.com/cloudwu/skynet/wiki/LuaAPI
相关文章推荐
- Skynet基础入门例子详解(5)
- Skynet基础入门例子详解(3)
- Skynet基础入门例子详解(6)
- Skynet基础入门例子详解(1)
- Skynet基础入门例子详解(5)
- Skynet基础入门例子详解(3)
- Skynet基础入门例子详解(2)
- Skynet基础入门例子详解(7)
- Skynet基础入门例子详解(6)
- Skynet基础入门例子详解(7)
- Skynet基础入门例子详解(4)
- Skynet基础入门例子详解(2)
- Skynet基础入门例子详解(4)
- Struts2入门基础之Action详解(四)
- android基础入门控件详解(4)
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Hibernate_配置详解>(三十六)
- android基础入门控件详解(6)
- android基础入门控件详解(5)
- Python学习入门基础教程(learning Python)--3.3 分支语句的条件表达式详解 .
- Linux基础入门及系统管理01-Linux运维核心技能-bash基础特性详解09