skynet学习笔记二

skynet已经做好了服务间消息的推送与接收,使用都只需要按照约定的协议进行handle处理就可以了。

RPC调用
skynet.call(address, typename,…)
此接口会在内部生成唯一一个session,并向address发起请求。(注意:这里的address可以是一个name),并且阻塞的等待对session的回应。当消息回应后通过之前注册的unapck函数解包。可以将它理解为pomelo里面的rpc,并阻塞等待回应.(pomelo中为异步等待回应),call不支持超时。貌似风云也不打算准备支持超时。

skynet.send(address, typename,…)
此接口为非阻塞的向address推送一条消息,事先会通过注册的pack打包.

skynet.redirect(address, source, typname, session,…)
此接口与send功能类似,但可以指定发送地址source,指定发送的session.

skynet.rawcall(address, typename, message, size)
此接口与call类似,阻塞API,但不pack,收到回应后也不unpack。

demo,在talkbox示例中,main有以下代码

local skynet = require "skynet"

local max_client = 64

skynet.start(function()
    print("[LOG]",os.date("%m-%d-%Y %X", skynet.starttime()),"Server start")
    skynet.newservice("talkbox")   -- 启动talkbox服务
    local watchdog = skynet.newservice("watchdog")  --启动watchdog服务
    skynet.call(watchdog, "lua", "start", {   --对watchdog做一次rpc,lua协议
        port = 10101,
        maxclient = max_client,
    })

    skynet.exit()   -- 退出这个skynet,原有服务保留,talkbox与watchdog。
end)

https://www.processon.com/i/568c6ea4e4b0e51d149a085f
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值