【从零开始学Skynet】实战篇《球球大作战》(十一):测试登录流程

终于可以测试work协议了。只要走得通,就代表完成了整套底层框架。

1、主服务修改

        我们重新修改主服务,让它智能一些,根据配置文件自动开启服务,无须手动设置。如下代码所示:

local skynet = require "skynet"
local skynet_manager = require "skynet.manager"
local runconfig = require "runconfig"
local cluster = require "skynet.cluster"


skynet.start(function()
	--初始化
	local mynode = skynet.getenv("node")
	local nodecfg = runconfig[mynode]
	--节点管理
	local nodemgr = skynet.newservice("nodemgr","nodemgr", 0)
	skynet.name("nodemgr", nodemgr)
	--集群
	cluster.reload(runconfig.cluster)
	cluster.open(mynode)
	--gate
	for i, v in pairs(nodecfg.gateway or {}) do
		local srv = skynet.newservice("gateway","gateway", i)
		skynet.name("gateway"..i, srv)
	end
	--login
	for i, v in pairs(nodecfg.login or {})  do
	local srv = skynet.newservice("login","login", i)
		skynet.name("login"..i, srv)
	end
	--agentmgr
	local anode = runconfig.agentmgr.node
	if mynode == anode then
		local srv = skynet.newservice("agentmgr", "agentmgr", 0)
		skynet.name("agentmgr", srv)
	else
		local proxy = cluster.proxy(anode, "agentmgr")
		skynet.name("agentmgr", proxy)
	end	
	--退出自身
    skynet.exit()
end)

        主服务先开启nodemgr(每个节点必有一个),加载cluster(用于跨节点通信),再根据配置依次开启节点内的gate、login等服务。由于nodemgr、gateway、login是“本地服务”,因此使用skynet.name给它命名。agentmgr是“全局服务”,如果它在其他节点,则使用cluster.proxy创建一个代理。

2、代码测试

(1)登录测试

        开启节点1运行游戏服务端,使用telnet测试的结果如下图所示。

      该图所示的结果表示客户端发送login登录id为101的角色,然后两次发送work协议,每次“打工”金币都会增加。成功执行这一流程意味着服务端框架已经成型,可以在它基础上开发游戏逻辑。

 (2)顶号测试

  我们再开启一个客户端登录同一个账号,运行结果如下图所示,顶号成功。

 

3、跨节点测试

        单个节点只能部署在一台物理机上,它能承载数千玩家。如果要支撑更多,就需要开启多个节点,如下图所示,请确保节点2的配置文件etc/config.node2存在,它的内容和config.node1一样,仅仅是将node项改成了“node2”。

         设置完成后可以开启两个节点进行测试,让不同的客户端连接不同节点的gateway,它们应该都能正常工作。还可以尝试修改配置进行测试,比如将agentmgr放在节点2上,程序也应该能正常工作。

说明:如果开启多个节点,对开启顺序会有要求,应先开启agentmgr所在的节点,再开启其他,否则会报错。

 

完整代码地址:https://gitee.com/frank-yangyu/ball-server

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值