Skynet基础入门例子详解(1)

原创 2017年03月16日 18:11:43

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

最简单的入门例子:

同目录创建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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uisoul/article/details/62431188

在VC++中访问和修改系统注册表 作者:陈伟

在VC++中访问和修改系统注册表 作者:陈伟 发布时间:2001/05/14  文章摘要:  在实际的编程工作中,我们遇到了如何在Visual C++中对Windows95/98注册表整个树状结构信息...
  • CandyCat
  • CandyCat
  • 2001-06-07 02:08:00
  • 2159

Skynet基础入门例子详解(3)

Skynet服务端与客户端Socket通信
  • uisoul
  • uisoul
  • 2017-03-20 14:53:55
  • 2313

Skynet基础入门例子详解(4)

Skynet服务端与客户端Socket通信
  • uisoul
  • uisoul
  • 2017-03-20 15:06:34
  • 3688

Skynet基础入门例子详解(5)

Socket通信协议Sproto 在和客户端通讯时,需要制订一套通讯协议。 skynet 并没有规定任何通讯协议,所以你可以自由选择。 sproto 是一套由 skynet 自身提供的协议...
  • u011744843
  • u011744843
  • 2017-04-24 13:46:43
  • 1579

从零开始学习Skynet_examples研究

一、编译Skynet: 1、用ubuntu15.10直接make linux编译Skynet会有报错。安装autoconf、libreadline6、libreadline6-dev后就能编译成功了...
  • Mr_virus
  • Mr_virus
  • 2016-08-26 17:10:07
  • 4216

skynet框架 使用心得

使用skynet将线上的项目重写一遍之后,没上线之前我想说,sky n
  • a240581469
  • a240581469
  • 2014-09-14 14:34:48
  • 11717

自己收集的skynet教程

https://github.com/cloudwu/skynet CentOS安装skynet问题总结 skynet资源收集 Skynet基础入门例子详解(1) Skynet基础入门例...
  • libaineu2004
  • libaineu2004
  • 2017-07-14 11:32:43
  • 1851

skynet的一些整理

##skynet 相关 *. 网络:gate.lua、gateserver.lua、socketdriver .lua、netpack.lua是一套东西,完整的实现了封包的处理,即两个字节的数据大小...
  • antsmall
  • antsmall
  • 2016-09-09 20:54:21
  • 1037

Skynet服务器框架(三) Mac OS X环境安装

Mac os x下安装sky net:安装:相比于Linux系统,Mac系统下安装skynet显然要简单得多,打开Mac的终端,大致步骤如下: 先检查本地是否已安装了git工具,假如已经安装:bogo...
  • linshuhe1
  • linshuhe1
  • 2017-04-15 19:57:09
  • 2356

云风skynet服务端框架研究

http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。...
  • oMingZi12345678
  • oMingZi12345678
  • 2015-12-10 13:44:27
  • 9066
收藏助手
不良信息举报
您举报文章:Skynet基础入门例子详解(1)
举报原因:
原因补充:

(最多只允许输入30个字)