如何编写可热更服务模块

前言

使用skynet开发服务,通常不会把所有任务写在一个服务中,一般会拆分成一个个服务单元,服务单元通过rpc调用协同工作。

简介

可热更服务模块 本质上就是一个skynet的lua服务,是用skynet.newservice API 创建的。只是会加载指定的 xxx_m.lua文件,相当于用相同的盒子包装不同的东西。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
local CMD = {}

--start 函数是必须实现的,返回true,说明启动成功,false,说明启动失败
function CMD.start(config)
return true
end
-- herald_exit 有新服务尝试上线
function CMD.herald_exit()
log.error("预告退出")
end
-- exit 函数 必须实现,返回true,说明可以退出,将会在1段时间后调用skynet.exit()
function CMD.exit()
log.error("退出")
return true
end
-- fix_exit 说明已经热更成功,有新服务上线了,旧服务可以处理下线工作了
function CMD.fix_exit()
log.error("确认要退出")
end
-- cancel_exit 新服务上线失败
function CMD.cancel_exit()
log.error("取消退出")
end
-- check_exit 检查退出,返回true,表示可以退出。
function CMD.check_exit()
log.error("检查退出")
return true
end

--自定义 rpc 命令 处理函数
function CMD.doingsame()

end

return CMD

实现细节

实现细节,有兴趣可以看看。


如何编写可热更服务模块
https://huahua132.github.io/2023/02/25/skynet_fly_word/word_1/F_module/
作者
huahua132
发布于
2023年2月25日
许可协议