【从零开始学Skynet】实战篇《球球大作战》(三):封装常用的API

文章介绍了如何使用Lua进行Skynet服务的封装,包括定义服务属性、启动逻辑、消息分发方法以及辅助方法,如call和send,以减少重复代码,提高效率。通过示例展示了如何创建和启动一个简单的gateway服务。

        为什么要封装?封装可以减少一些重复代码,提高我们的工作效率。

1、定义属性

        新建文件lualib/service.lua,定义模块的属性, service模块是对Skynet服务的一种封装,代码如下所示:

local skynet = require "skynet"
local cluster = require "skynet.cluster"
local M = {
    --类型和id
    name = "",
    id = 0,
    --回调函数
    exit = nil,
    init = nil,
    --分发方法
    resp = {},
}
return M
  • name代表服务的类型id代表服务编号。

        如下图中的gateway1,它的namegatewayid1;对于agentmgr,它的nameagentmgrid0(全局唯一)

  • initexit是回调方法,在服务初始化和退出时会被调用(本篇暂不实现exit的功能)。
  • resp表会存放着消息处理方法。

 2、启动逻辑

        给service模块添加如下所示的start方法,用于开启服务。当外部调用start方法时,它先给nameid赋值,再调用skynet.start开启服务。服务启动后,Skynet会调用init方法,由它调用skynet.dispatch实现消息的路由,再调用上层的M.init()

function init()
    skynet.dispatch("lua", dispatch)
    if M.init then
        M.ini
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值