skynet_util skynet相关 skynet_util function M.lua_dispatch(cmd_func)描述 注册lua消息处理函数参数 cmd_func table 函数表 返回值 function M.lua_src_dispatch(cmd_func)描述 注册lua消息处理函数(带source)参数 cmd_func table 函数表 返回值 function M.number_address 2024-06-29 skynet_fly API 文档 > 工具函数 #skynet_fly_api
string_util string相关 string_util function M.split(inputstr, …)描述 字符串分割,可以嵌套分割 例如:split('1:2_3:4','_',':') res = {{1,2},{3,4}}参数 inputstr string 被分割字符串 … string 分隔符列表 2024-06-29 skynet_fly API 文档 > 工具函数 #skynet_fly_api
table_util table相关 table_util function M.is_loop_table(check_table,is_route)描述 检测表是否有环引用参数 check_table table 目标表 is_route boolean 是否需要返回环路径 返回值 boolean 是否出现环引用 string|nil 环路径 string|nil 环路径 function M.dump(tab)描述 不会 2024-06-29 skynet_fly API 文档 > 工具函数 #skynet_fly_api
time_util 时间相关 time_util function M.skynet_int_time()描述 获取当前时间戳参数 返回值 number 时间戳(秒*100) function M.time()描述 获取当前时间戳参数 返回值 number 时间戳(秒) function M.date(time)描述 获取当前日期参数 返回值 table 日期格式的table{year=2025,month 2024-06-29 skynet_fly API 文档 > 工具函数 #skynet_fly_api
远程sub/pub 模式 和 远程subsyn/pubsyn 模式 前言有时候,一些事件的通知目标是不确定或者增量的,此时就需要用到订阅发布模式(sub/pub),发布者只负责发布事件数据,谁关心此事件,订阅即可。 对比redisredis也支持sub/pub模式,并且有psub批量订阅支持。 skynet_fly目前只实现了sub/pub模式,后续如果发现有非常硬性需要psub也可以考虑实现一下。不过skynet_fly实现了red 2024-06-29 skynet_fly 文档 > 强化篇 #skynet_fly_word
为skynet_fly新增远程调用方式 前言目前skynet_fly的远程调用方式,是采用了封装skynet的cluster 集群方式,每个连接都会有一个服务端有一个clusteragent 接收代理,客户端有一个sender 发送代理服务。再加上我封装的cluster_server和cluster_client,这样发送端和接收端就分别存在了2个代理服务。也就是说调用一个rpc请求会经过非常多次的打包解包流程。 发送者->clu 2024-05-03 一些想法 #一些想法
详解skynet 频发的重入问题 例子说明我们假设有2个服务,1个用户。银行服务 提供转账。风控服务 对用户进行风控,提供阻止转账取款功能。用户一 用手机转账。 bank_service.lua 1234567891011121314151617181920local account_amonut_map = {} --账户余额local CMD = {}--转账function CMD 2024-03-24 skynet #skynet_frame
关于skynet_fly_demo的架构设计 架构图 简介skynet_fly_demo是基于skynet_fly框架,开发对战类游戏架构,适用于moba、棋牌类游戏架构。 各服务职责center server 中心服 记录用户账户信息,比如账号,密码,手机号,注册渠道,设备号,平台等等信息。 记录用户创角信息,比如玩家ID,归属大厅服ID等等。 可以记录一些全局唯一的信息,比如登录的公告信息等等。 验证登录服登录。 login serve 2024-02-17 一些想法 #一些想法
关于监听同步模块的封装 为啥需要封装一个监听同步模块?使用skynet开发功能,由于是actor模型,难免会遇到一个服务需要依赖另一个服务的数据的情况,解决这个问题常见的方案有: 封装一个c模块,用于共享数据 优点: API使用简单,get set 即可。 节省内存。 缺点: 编码难度大,风险高,需要处理好多线程编码问题。 需要加读写锁,读取性能不一定高。 lua调用c,没有直接访问lua快。 要用的时候去 2024-01-28 skynet_fly实现思路历程 #skynet_fly实现思路历程
orm ormentry.lua单条数据条目对象。 常用方法 M:get(filed_name) 函数作用域:M:new 对象的成员函数 函数名称:get 描述: 获得对象指定字段的值 参数: - filed_name (string): 字段名 返回值: value(number or string): 值 M:set(filed_name, filed_value) 函数作用域: 2024-01-28 skynet_fly_api #skynet_fly_api