为了理解skynet中的watchdog gate gateserver 和agent的关系,我看了skynet的源码,也找了很多博客,终于有了大致头绪。
一、文件位置
其中watchdog.lua agent.lua在文件夹skynet/examples下
gate.lua在skynet/service文件夹下,gateserver.lua在skynet/lualib/snax文件夹下。
二、调用时序图
该图是用star UML画的,基本是按照这篇博客里的图画的,自己也对照着源码去求证,确实如此。
查看这篇文章:skynet watchdog和gate
三、简化图
skynet踩坑记录(一)客户端连接之watchdog gate agent复杂错乱关系
四、自己的理解
上面的图是将gate和gateserver合并为"gate",其实这个也是可以理解的,因为gateserver.lua和gate.lua是包含与被包含关系。
其实我刚开始不好理解的地方是agent中的
function CMD.start(conf)
local fd = conf.client
local gate = conf.gate
WATCHDOG = conf.watchdog
--中间省略
client_fd = fd
skynet.<