内部rpc调用

关联文件

最常用API

  • M:register(…) 注册访问。(没有注册访问的,去创建对象访问都会报错),这个服务start之后就不能再调用。
    参数:module_name列表。

  • M:new(module_name,instance_name,can_switch_func) 创建调用对象。
    参数:
    * module_name(string) 模块名称,需要send或者call通信的模块名称(相当于一级索引)。
    * instance_name(string) 实例名称,它是模块的二级分类(相当于二级索引)。
    * can_switch_func(function) 是否可以切换服务(不传默认可以)。
    返回值:
    1. client(table) rpc客户端对象。

  • M:instance(module_name,instance_name) 使用单例访问对象(很多时候并不需要创建管理rpc调用对象)。
    参数:
    * module_name(string) 模块名称,需要send或者call通信的模块名称(相当于一级索引)。
    * instance_name(string) 实例名称,它是模块的二级分类(相当于二级索引)。
    返回值:
    1. client(table) rpc客户端对象。

  • M:mod_send(…) 使用mod方式映射到一个server,之后用send方式给server发送消息(适用与长期与指定的服务联系)。
    参数: server接受的参数。
    返回值: 无。
    mod模式解释:假设server启动了6个,本服务的handle为7,取到的对应server handle为server_handle_list[7 % 6 + 1]。

  • M:mod_call(…)mod_send一致,唯一区别是使用call的方式发消息。

  • M:set_mod_num(num) 设置mod值,没有设置的情况下,默认使用本服务的handle,用于解决有时候需要使用角色id来做映射。
    参数:
    * num(number) mod使用值。
    返回值:无

  • M:balance_send(…) balance简单负载均衡,之后用send方式给server发送消息(适用与需要提高负载)。
    参数: server接受的参数。
    返回值: 无。
    balance模式解释: 假如server启动了6个,就会有server的handle列表,这种模式会1,2,3,4,5,6,1这样轮询的访问。

  • M:balance_call(…)balance_send一致,唯一区别是使用call的方式发消息。

  • M:mod_send_by_name(…) 假如server启动了6个,3个instance_nameA,3个为B。这种方式基于指定的instance_nameserver_handle_list取映射。

  • M:mod_call_by_name(…) call方式。

  • M:balance_send_by_name(…) balance模式,send方式。

  • M:balance_call_by_name(…) balance模式,call方式。

  • M:set_instance_name(name) 设置instance_name。

不常用API

  • M:broadcast(…) 广播。
  • M:broadcast_call(…) 广播调用。
  • M:broadcast_by_name(…) 通过instance_name广播。
  • M:broadcast_call_by_name(…) 通过instance_name广播调用。
  • M:set_week_visitor(…) 设置弱访问者,如果业务逻辑实在有环访问问题,可以使用这个设置。
  • M:monitor_all() 监听所有的可热更服务地址,用于解决启动时,不确定访问哪些服务。
  • M:CMD(cmd) 扩展CMD,不能热更服务需要扩展的CMD的命令。

使用注意点:

服务start之前不能使用rpc调用,因为服务还没有准备好,如果这样使用会抛出错误。

如果实在要在start中去rpc调用:

可以用fork包裹。

1
2
3
4
5
function CMD.start()
skynet.fock(function()
rpc call...
end)
end

总结

已经坚持完善skynet_fly有半年多了,新年第一篇。新年快乐!!!


内部rpc调用
https://huahua132.github.io/2024/01/07/skynet_fly_api/rpc/
作者
huahua132
发布于
2024年1月7日
许可协议