skynet
文章平均质量分 63
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 demo plain text 分支(一)通讯协议
skynet demo 项目地址(plain text分支 )客户端到服务端c2s.sproto:.package { type 0 : integer session 1 : integer ud 2 : string}.User { username 0 : string password 1 : string nickname 2 : string}ping 1 {}sigup 2 { request User response { ok 0 : boole原创 2020-07-27 09:49:27 · 270 阅读 · 0 评论 -
skynet 基础部分(二) sproto 通讯协议
介绍在和客户端通讯时,需要制订一套通讯协议。 skynet 并没有规定任何通讯协议,所以你可以自由选择。sproto 是一套由 skynet 自身提供的协议,并没有特别推荐使用,只是一个选项。sproto 有一个独立项目存在 。同时也复制了一份在 skynet 的源码库中。它类似 google protobuffers ,但设计的更简单,也更利于 lua 使用。同时还提供了一套简单的 rpc 方案。以上内容来自 sproto简单来说,sproto是云风为skynet定制的通讯协议,它只支持四种原创 2020-07-24 19:04:42 · 1949 阅读 · 0 评论 -
skynet 基础部分(一)启动及消息处理流程
介绍skynet 项目地址skydet demo 即本项目地址skynet 是一个轻量级的为在线游戏服务器打造的框架。在使用skynet之前,非常有必要把作者写的skyent说明看一遍。homeGettingStartedFAQAPIListLuaAPIsprotoGateServerConfigCoroutine以上是必看的内容。agentagent 用于处理来自客户端的请求。watchdog看门狗,主要负责启动agent来执行业务逻辑、处理来自客户端的请求,agen原创 2020-07-24 17:43:01 · 1470 阅读 · 1 评论