lua
文章平均质量分 75
Sino_Crazy_Snail
我意凌云,追求卓越。
展开
-
skynet SERVICE_NAME定义
在看源码的时候发现这样的调用:-- loginserver.lua#L163table.insert(slave, skynet.newservice(SERVICE_NAME))可是上下文并没有找到SERVICE_NAME的定义,因为之前对Lua的全局变量理解有误,导致我没有想到调用一个没有定义的变量的原因是什么。后来经过前辈提醒,SERVICE_NAME是一个全局变量,我立马醒悟过来,最终在 loader.lua中找到了SERVICE_NAME的定义。先记录一下。以前对lua的全局变量的理原创 2020-08-03 10:04:13 · 588 阅读 · 0 评论 -
skynet demo cluster 分支(二)Gamegate
项目地址在gamagate中并没有注册消息处理函数,那么它是怎么分发消息的呢?我们可以去查看msgserver的源码:-- msgserver.lua...function server.start(conf) ... local CMD = { login = assert(conf.login_handler), logout = assert(conf.logout_handler), kick = assert(conf.kick_handler), } fu原创 2020-07-27 17:21:31 · 459 阅读 · 1 评论 -
skynet demo cluster 分支(一)main.lua
Main.lua这次我们从main.lua开始讲起。main.lua 代码-- main.luaskynet.start(function() ... skynet.newservice("debug_console", skynet.getenv("debug_port")) skynet.newservice("mysqldb") skynet.newservice("redisdb") local protoloader = skynet.uniques原创 2020-07-27 16:42:01 · 618 阅读 · 2 评论 -
skynet demo plain text 分支(七)客户端代码
client.lua 代码debugtool 代码-- client.luapackage.cpath = "luaclib/?.so;/home/lks/code/skynet/luaclib/?.so"package.path = "lualib/?.lua;service/?.lua;/home/lks/code/skynet/lualib/?.lua"设置lua包和c的so库的路径,告诉lua VM应该到哪里去找包。-- client.lualocal f = io.open("p原创 2020-07-27 14:34:18 · 258 阅读 · 0 评论 -
skynet demo plain text 分支(六)agent 业务逻辑处理
agent.luadebugtool 代码消息处理-- agent.lualocal function request(name, args, response) -- debugtool.log("get request with name: %s", name) local f = assert(REQUEST[name]) local r = f(args) if response then return response(r) endendlocal function原创 2020-07-27 11:46:11 · 325 阅读 · 0 评论 -
skynet demo plain text 分支(五)看门狗
watchdog.lua 代码debugtool 代码-- watchdog.lualocal CMD = {}local SOCKET = {}...skynet.start(function() skynet.dispatch("lua", function(session, source, cmd, subcmd, ...) skynet.error(string.format("watchdog get cmd: %s", cmd)) if cmd == "socket" th原创 2020-07-27 11:10:46 · 289 阅读 · 0 评论 -
skynet demo plain text 分支(四)通讯协议的载入
-- protoloader.lualocal skynet = require "skynet"local sprotoparser = require "sprotoparser"local sprotoloader = require "sprotoloader"local data = {}local CMD = {}local function load(name) local filename = string.format("proto/%s", name) local f原创 2020-07-27 10:32:26 · 225 阅读 · 0 评论 -
skynet demo plain text 分支(三)redis业务处理
-- redis.lualocal skynet = require "skynet"local redis = require "skynet.db.redis"local debugtool = require "debugtool"require "skynet.manager"local dblocal CMD = {}function CMD.sigin(username, client_fd) debugtool.log("sigin with (%s, %d)", u原创 2020-07-27 10:22:35 · 366 阅读 · 1 评论 -
skynet demo plain text 分支(二)Mysql业务处理
-- mysqldb.lualocal skynet = require "skynet"local mysql = require "skynet.db.mysql"require "skynet.manager"local debugtool = require "debugtool"local dblocal CMD = {}-- 注册 function CMD.sinup(username, password, nickname) local stmt = db:pre原创 2020-07-27 10:08:01 · 221 阅读 · 0 评论 -
skynet 基础部分(二) sproto 通讯协议
介绍在和客户端通讯时,需要制订一套通讯协议。 skynet 并没有规定任何通讯协议,所以你可以自由选择。sproto 是一套由 skynet 自身提供的协议,并没有特别推荐使用,只是一个选项。sproto 有一个独立项目存在 。同时也复制了一份在 skynet 的源码库中。它类似 google protobuffers ,但设计的更简单,也更利于 lua 使用。同时还提供了一套简单的 rpc 方案。以上内容来自 sproto简单来说,sproto是云风为skynet定制的通讯协议,它只支持四种原创 2020-07-24 19:04:42 · 1949 阅读 · 0 评论 -
lua 5.3 C函数库
我们从头开始讲起怎么为lua写一个C语言函数库。首先去下载源代码,我这里选择的是5.3.5版本的源代码。然后去安装好mingw64编译工具。我们将lua源代码解压,进入源代码目录,打开命令行,输入 make mingw。在命令make mingw运行完毕后,我们会得到一系列的.o、.a等文件,还有luac、lua,lua53.dll或者lua53.so(取决于你的系统,我这里用的windo...原创 2019-10-11 19:08:05 · 463 阅读 · 0 评论