skynet 基础部分(一)启动及消息处理流程

本文介绍了Skynet游戏框架的基础知识,包括agent、watchdog、gate和gateserver的角色。着重讲解了main.lua的启动过程,skynet.call的RPC调用,以及skynet.dispatch的消息处理。文中还通过时序图展示了从服务启动到客户端连接的完整流程。
摘要由CSDN通过智能技术生成

介绍

skynet 项目地址
skydet demo 即本项目地址

skynet 是一个轻量级的为在线游戏服务器打造的框架。在使用skynet之前,非常有必要把作者写的skyent说明看一遍。

以上是必看的内容。

agent

agent 用于处理来自客户端的请求。

watchdog

看门狗,主要负责启动agent来执行业务逻辑、处理来自客户端的请求,agent.lua和watchdog.lua都是在应用层写的脚本。

gate & gateserver

gate 是一个网关服务器,需要配合gateserver使用。skynet已经提供了gate.lua和gateserver.lua,我们只需要在watchdog.lua里面调用就可以。

service/gate.lua 是一个实现完整的网关服务器,同时也可以作为 snax.gateserver 的使用范例。examples/watchdog.lua 是一个可以参考的例子,它启动了一个 service/gate.lua 服务,并将处理外部连接的消息转发处理。内容来自skynet wiki

main.lua

skynet 的启动通常是从一个叫main.lua的文件开始的,然而skynet是怎么知道第一个要加载的文件是这个main.lua呢?

其实,skynet在逻辑上首先读取的是一个叫config的文件,也就是启动skynet时传入的文件名。

比如

skynet config/config

skynet会去读取config目录下的一个叫config的文件,这个config文件实质上是一个遵循lua语法的文件,具体详情细节可以查看 skynet wiki的Config部分。

举个例子

config文件内容:

start = "main"	-- main script
root = "./"
thread = 8
logger = nil
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
bootstrap = "snlua bootstrap"	-- The service for bootstrap
standalone = "0.0.0.0:2013"
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua"
lualoader = "lualib/loader.lua"
snax = root.."examples/?.lua;"..root.."test/?.lua"
cpath = root.."cservice/?.so"

内容的第一行中的start参数的值就是skynet要启动的第一个业务脚本,skynet会从luaservice所配置的路径中去寻找这个start参数所指定的文件。

我们通常会在main.lua里读取config文件里自定义的一些配置,并启动一些列相应的service

拿skynet项目里提供的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值