00:01
大家好,欢迎来到自己教育课程的学习,本系列课程呢,是自己教育的第一节,从零开始搭建游戏服务器,本节课呢是第13节课,给大家讲一下H5客户端,呃,还有一些我们玩家数据的保存,给大家讲一个例子,一个我们定时推送的一个例子啊。本节课的两大内容,第一个呢,还是我们公众号的资源,第二个呢,就是我们实际的编码本节课的本节课的核心内容啊。公众平台,这是我们的二维码,大家呃,扫二维码关注一下啊,回复关键字客服呢,获取我们课程助教的一个微信信息。我们每节课的课程啊,更新之后呢,都会在微信群里面进行通知啊,大家最好是加一下。好,那我们今天给大家讲一下我们课程的本节课的核心内容。核心内容呢,先说一下H5客户端,因为在前几节给大家前12节给大家测试的时候呢,是没有提及到H5客户端的,只是大家说斌哥写过完这拿过来就用了,现在给大家提及一下,也就是说大家怎么样一个流程有一个大概的概念啊。
01:07
如果你在编码过程中遇到问题的话,你可以在微信群里面问我就可以了,好,首先呢,We socket在我们H5里面是,嗯,是支持的web socket,首先呢,大家要,呃,这唯独有不同的一点呢,可能就是我们这做了一个封装啊,这个封装呢,我是在网上找的,也是就是test做了一个封装,它封装了一个和什么的一个信息。呃,这份代码呢,在网上大家都可以可以查到的。或者我放到那个我论坛上都可以啊,大家可以去看一下,因为我们呃,我们的课程呢,主要是讲游戏服务器的,所以说前端呢,我不会给大家讲太多,这节课能给大家预留十分钟的时间嘛。你说一下前端的一些知识就是好呃。大家那个找到代码H5的一个代码之后呢,这里唯有不同的是我们再返回给。
02:04
H5客户端的时候呢,需要一个周转,也是在这里,大家可以看我写啊,我把它放大一点能不能。哦,能放大一点哈,就在这里,在I on messages里面,也就是说大家open握手型,握手那个test的web成功之后呢,会在web里面返回一个信息,也是会打印,打印到我们的一个屏幕上,这块看你自己输出,你可以用log来输出。我们呃,H5客户端和我们的服务器正常通讯之后呢,比如说我们上节课讲的,他就会返回给我们的一个。呃,玩家的一个信息就是在这个里面。会返回给我们客户端的一个信息,大家已经打印出来了,我记的对吧。已经打印出来了,那我这边不在不在这演示了上节上节课上节课的信息,大家回顾一下。好,这打印之后呢,我们这里有一个有一个问题啊,就是这里大家注意看啊,自己处理的时候一定要注意,这里呢,我们server返回的是一个什么数据,大家大家如果自己。
03:04
去测试的话,它返回的是一个。这是64位的数据。数据字符串,所以说大家拿到这个字符串之后呢,在H5客户端呢,要怎么。H5的。客户端要的码进行一个。解析,也就是反序列化。序列。反序列化的。操作。也就把我们首先呢,把我们贝斯64,也是贝斯贝斯64的数据呢,转换成我们什么转换成我们的杰森数据,大家理解了吧,通过杰森呢,我们去。Jason,数据呢?接受。监测数据在解析到我们的一个什么。
04:03
通过阶层数据呢去。找到我们的一个对应的处理。嗯,这处理吧,到我们逻辑处理。逻辑处理。这会儿大家要注意了,第四点大家要记清了,这B64呢,大家解析的时候呢,我这有一个有一段代码,大家可以看一下啊,把这段代码大家自己加在自己网上找那段H5客户端里面去。同时呢,我们要一个GS,这个GS是我。我写的啊,就是这个,我们会把这个GS呢发到群里面去啊,或者你没有的话,他呢主要做什么呢,我给大家说一下。它主要做的就是贝斯64的一个编码,编解码的一个。大家可以去网上找一下,找一下如果解析不到或者出错的话,大家可以直接来是吗。来找我,然后找我把这个发给大家就可以了,这是我们H5客户端的一些一些小知识啊,大家要要熟悉的一个处理流程,就是在这里面,因为后面我们所有的后面你要开发微信小游戏的时候啊,包括微信小游戏对吧,包括我们的那个H5游戏啊,因为只要用我们服务器的话,你自动代码一定要有的。
05:20
也是我斌哥在这儿写的。流程上你是不能缺失的,缺失的话你是解析不了的。明白,嗯。你像这个多散的呀,这个都比较简单啊,这是我直接发送的对吧,这是显示屏幕的信息,这是监听是吗。啊,这就不说了,这客户端东西比较,呃,不在我们讲的范范畴之内啊,大家理解就可以了。好吧。有不理解的大家一定在群里面说就可以了,嗯嗯。好吧,你看这是之前做的那个。哦,这个大家看一下,这是我们账号系统你看。账号系统的信息是封装的函数。
06:03
完了,这个是我们保存的,当这是这是数据的信息啊,然后这个里面是我们协议,你看协议的话和我们和我们在那个是一样的,你看。超级账号的信息啊,这是模拟的信息啊,对吧。你看这和我们的那个封装,和我们在和我们在我们服务器封装其实是一样的,你看在这里面嘛,对吧,一我这不在这里面转化成我们的一个什么,转化成我们一个GS可以获取的一个形式了,理解了吧。大家知道这个概念啊。这是主协议栏的。主协议是什么样子的,对吧。大家可以看一下。后面用到的话,你就可以直接这么写就没问题。斌哥的这条路已经趟了呃,很久了,有问题的话大家就直接问就可以了。啊,大家简单看一下,给大家停留几秒钟,大家看一下这个怎么处理啊。这块这保存一下吧。
07:08
好,那我们,呃,客户端就给大家说到这里啊,我们来看一下我们今天的主要内容还是讲服务器啊,服务器我们看一下。服务器给大家讲那个我们玩家的connect的数据的保存,大家对呃,我们玩家数据的保存这个流程上有没有什么不懂的,或者有有没有清晰一点的。我们来看一下代码,完了之后给大家补一下那个我们思维导图,完了之后呢,我们再写代码,这样子可能大家流程更清晰一点。首先是从我们。最开始说起就在我们这里面啊。这就不说了,这就比较简单了,这是监听端口,那么往往下。也就是在我们,呃,序列化这里,这是我们序列化就不说,这大家应该也比较清楚了,多看代码在这里保存。
08:00
哦,这个上面应该是这个函数的。上一集我看看我们在哪里啊?好,这个函数上一节应该在。不是这个里面吗。我找一下啊,嗯。子协议,主协议,我们这个函数搜一下。搜一下我们,看看我们在哪里啊哎。OK,在这里,那好。首先大家这个里面是我们保存的网络信息,对吧,这个是没问题的吧,我们只是用它的一个网络指针的方法,相当于指向了我们函数完了之后呢,依此类推,一直到我们,一直到我们最后结束啊,最后把我们的数据打包发给服务器,一直到这一步,也是一直是我们的方法。而并没有把我们的数据保存下来,也就是说现在有个场景跟大家说一下。
09:07
也就是说现在一个场景给大家说一下,如果呢。如果嗯,这样子,我用思维导图来说一下,嗯。嗯,我再加一个,这是部署,那么我们再加一个。再加一个信息出来。我们再加一个出来啊,那么这样子写,呃,这样子。那就是有一个。Connect信息是做什么的,大家是信信息是吧,他呢,我们是做什么的呢?给大家说一下那就OK,那第一个信息呢,可以作为什么。数据推送。正常应该在网关服务器啊,因为我们现在只有一个game server就不给大家说了,正常情况下。
10:02
正常是怎么?正常。是网关服务器广播。不要不要被盯个带沟里面去啊,这个东西大家注意点啊,我们现在是只有一个game server,只实现game server的信息啊,正常是在网关推送数据,数据推送就是广播啊,第二个就是玩家的一些数据close。吃对资源的释放。这个呢,涉及到一个问题了,就是说诶这是怎么回事。涉及到一个。这是怎么?玩家。玩家。下线后。但没有关非正常的,这是注释一下非正常的,那么我们就可以用connect信息。非正常关闭,那么我们就怎么怎么操作,其实用定时器来呗,这操作呢就是。
11:03
定时器来。清理。清理数据,OK,大家明白了吧?清楚了吧?好,那么其他的呢,就是我们。比如说那个。聊天服务器是吧,聊天服务器的广聊天嘛。聊天服务器等等了。还有很多,好吧,把我们排行榜服下,那这个就。这个就不写了,这个就应该是暂时没有这个需求是吧,好,那这样大家明白了吧。那么今天呢,我们就给大家实现一个什么功能呢,还是得加上这。加上实验一个什么功能呢,就是。玩家的数据,玩家数据保存后呢,我们再实现一个就是。定时器。推送给玩家,看看我们这个web的链接能不能实现,对不对,因为我们把链接保存下来之后呢,我们定时就可以给我们的客户端推送信息了,这节课呢,我们就实现它,大家理解了吧。
12:11
我们给大家展示一下我们强大的一个我socket的能力,和我们,呃,和我们的一个构语言结合的一个是吧,一个情况是怎么样子,好,那我们来吧。那这样子就给大家写一个简单的例子啊,因为我们第一期啊,就希望大家知道流程。第二期呢,我们抽离出来,我们第三期呢,我们做项目OK。不算打广告,这算正常的。因为大家是零基础嘛,没有的,没有开发过服务器,这样子的话,从零开始给大家搭建的话,就不用像网络那个网络那个其他开源架构的样子,上来之后就是各种呃,各种那个接口啊,各种那个封装啊,大家可能对看的越来越晕是吧,你可能看的时间就比较多。而斌哥你写这个呢,只要你从第一节开始看了你我相信你慢慢熟悉流程了,后面自己分的自己分的话也可以啊,斌哥给你分一下,你可以借鉴一下,也是没问题的,对吧。
13:10
主要是在流程上面,好,那么我们在这里呢,就给大家说一下,那么我们在。这里呢,就给大家保存一下呗,保存到我们。保存到我们的,我看一下啊保存。好,那我们就保存在这儿吧,就在这儿保存吧。保存玩家数据呢,我们我们还是用什么呢?Date play date吧,嗯,区分一点,大家取名字的时候可以随便取啊,但是也要最好有那个有一个规则下来啊。我们看看我们的玩家信息,那么还是结构体赋值呗,不是结构体对结构体初始化,相当于那么我们这样子操作。
14:03
同样的。他的信息呢,我们是有几个,有两个,我们把它拿过来。对吧,我们肯定是这两个信息保存的话,肯定还是初始化信息还是这两个嘛,这个是没问题的。那么它其实等于什么?大家想一想,里边的一个,它应该是等于什么?大家猜一猜。等于什么?是不是等于类似?点什么?菜菜肯定是他的菜。这个信息呢,这个MD5信息呢,我们。会用的,但是暂时呢,因为暂时没有玩家名字啊,有玩家名字加密码。其实最好是这样子,哪儿去了?就是。
15:07
好,这样子。这样的,我玩数据有了,再那我们下一步呢,就是保存。A箱怎么保存?呃,先等一会儿,先不说保存的事情啊。那我们看一下吧,那我看一下这个connect的数据,大家在这里面有没有什么问题啊,就是有没有什么想法,这个为什么这connect。Disconnect,因为我们这个指针是传过来的啊,这结构体在我们最开始已经给大家赋值了。在,我们在哪里?啊,这。看到没,在这里已经复制了,只不过这我们没存,其实正常你在这存的是存不下,是存不了的,为什么?因为你没有解析我们的。协议懂了吧,所以说必须我们在网在逻辑层来,逻辑层在这里逻辑层进行处理之后呢,拿到我们登录信息之后呢,才可以把这个数据保存下来。
16:09
理解了吧?这也就是你在这个里面可以控制什么呢。可以控制一些。呃,通过IP控制信息拆包嘛,解,你在这个里面的时候,你在这个我们网络逻辑层的时候,必须进行数据解析,也就是必须进行数据拆包之后才可以处理的,这个是。这是必然的一个东西啊。明白了吧?大家有疑问没有疑问的话,我们去群里交流,因为这是个录播啊,也也跟你们互动不了,后面我做公开课有直播的时候再跟大家跟跟大家互动吧,好吧,嗯,那这怎么保存,我们简单嘛,我们大家写测试吧,测试的话,呃。呃,写测试的话怎么办?我看一下能不能规范一点啊。测试嘛,那就在先这样子吧。
17:01
我们这定义一个结构,就叫那个。G开头是全局对吧,那我们全局的。Play date。外部信息啊。Map呢,我们就是字符串也可以诶。K是字符串,我们指针呢,那我们你觉得我们这个应该是什么。我们肯定是我们的,呃,哪去了,刚才我们保存那个肯定是他了,能是我们网络结构啊。这个还不能放这里,因为我们要初始化才能用,所以说我们必须放在I it里面就可以了。这是什么意思啊?好,我们先放这里。这是之前写的什么CTR是位,那好我们在这里初始化一次,大家对于那个什么结构初始化有有有没有印象啊,就那个。
18:07
水沟这一块。对那个基础知识大家要了解的怎么样子,这是涉及到涉及到基础的知识啊。我希望大家呢,能够就。就知道这个了。这些使用方法最起码基础,基础不牢的好吧,你可以自己去看都没问题,迅速就可以补回来的东西啊,这个是备注一下。全局的。网络信息结构,OK,那么我们就可以了,好,那么我们就把这个网络信息保存呗。很简单啊,过来。我在哪里去了?在这里那保存呗。我们key是什么key?
19:00
呃,先。提前写123456吧。完了,网络信息呢,就等于我们的。他觉得这样对不对。有没有什么?有没有自己一个想法,就是斌哥这样写的是对的还是错的?你们也要自己在脑海里想一想。有没有?那我们试呗,对吧,我们这儿最好呢,还是不用这个,用SD5是最好,但是这一块呢,涉及到一个问题啊,因为。MD5也行。不行,这样子容易出错,因为我们在我们后面写定时发送的时候会出现问题,所以说先写死吧,先写元素,大家知道流程就可以了,好,OK,我们把它保存下来了。
20:02
这样子我们把保存的数据打印出来。我们不有强大的一个glog吗?对吧。这音符我们把它保存下来打出来呗,对看啊,不是直接把它打出来看有没有就可以了。这个是比较现实的,对吧,好。那么现在我们保存了,那么我们下面怎么做呢?我们下面要给大家加个文件叫。Timer。他们是干啥干做什么的?差点没说出普通话。差点没说出方言。那么我们来做什么呢?嗯,这样子我们给大家写个定时器,大家对定时器这个概念有没有,有没有什么想法,有没有。有没有一个基础的认识,或者对定声器这块大家有没有不了解的?
21:00
不了解的去看基础啊。我们给大家公开课99块钱那个基础课程大家看一下,里面有一个定时器详解。讲了after和我们T的区别,对吧?大家可以看一下after和T有什么不一样的地方对吧,好。那我们就实际给大家说吧。那就。好。我们就直接写了啊,就。Select。Select,那么我们还是select。下面呢,就是我们的case。Kiss,那我们是什么?Time e。After。它的内容呢,我们就用十,呃,用100吧。呃,十十秒吗,十秒。20秒吧,可能。生意。Time。
22:03
Second。这是秒吧,Second。完了,我们做什么事情呢?你在这里面呢?这里面呢,我们就要。呃,发送数据,发送数据呢,我们怎么办呢。看兵哥怎么操作啊,我们保,诶我们那个T呢。看看,看住了,看清了,看清了,看猪去。呃。取它的值是多少,我们写死那个是123456对吧。点什么?诶,怎么没出来,我就觉得这个。太不人性化了,这个东西全部得自己写,哎呀。这个也是也是醉了,这个编辑器它可以提示啊,我不知道我弄了什么东西,提示不了。但这个是什么。完了,我们。
23:02
莱尔,这个能不能提示啊,这个也提示不了。这一天,这一天。好吧,我们看一下是什么名字。Message OK。那我们这里呢,我们。要传个数据进来啊,传个数据进来,那我们还是传这个呗,传我们现有的。代表数据。对吧,对。这里边儿呢,我看一下,嗯。呃,传这个数据没问题的。我们把那个前面包需要的第三方包全部包含进来。有个。主协议、子协议。就可以了,主协议,子协议,还有我们的。嗯。不用了,那个我们打印函数先不加OK。这应该没问题,好,我们去我们的in int函数里面去执行就可以。
24:06
几个学生去执行。这有没有不熟悉的,为什么要去携程,大家去看我们那个啥吧,看我们那个基础课程吧。好在这里。我看一下啊,这里有没有问题啊,这里要判断一下,要不然会挂掉,如果。肯定是这样子去执行的。这个应该在里面,因为他每次。每次执行的对象的话很大的对吧。这样子是严谨一点啊。在这儿我们可以判断一下。其实。
25:04
If。这个主要大家看你自己的一个情况。对吧,你这个。这个就看着自己的情况就可以了,OK,好。呃,这段代码我们就写完了,那么我们就给大家看一下逻辑啊,说一下逻辑这个定时器呢,我就不给大家讲,只说我们定时器逻辑这呢,看我微控,微控就下一循环呗,一直在循环呗。是20秒。20秒执行一次。啊,这里面呢,是我取我们就是什么123456啊,这是我们写死的,因为我们在这里边就数据保存的时候,是不是123456 123456嘛,把这个数据保存下来,因为这样子大家测试嘛,后面的话都会通过数据库保存下来的一个ID返回到MD5数据进行保存的。大家先知道流程完了我们取,如果为不为空的,我们执行,发一个消息,一个协议也是。发送给对。
26:02
好,那我们就编译一下呗,编一下应该正常是没问题的,应该。兵哥鞋是吧,先不催一会儿,别别实力打脸是吧,我们看一下。逻辑,其实对于各员来说,逻辑上大家写习惯了,就比较轻松一点了,诶,果然啊。Connect信息。看一下他说K的信息。可耐的信息不知可以用吗,我看。哦,K的信息,那么我们。哦,我们这样子的话。是还要去。嗯。好,我们其实我们看一下我们的结构里面是不需要多写了一个这个我们把它去掉啊,去掉不多写,应该这样就可以了,我们看一下。
27:08
Connect信息,这样就可以发送出去。定时推送,20秒推送一次。OK,没问题,那好,我们来执行一下呗。呃。我们来,我们打印一个信息出来吧,要不然的话,这块大家不知道执行没有是吧。我们把glo加进来。扎到这个里面来。同时呢,我们在。我们在这个信息里面打印一下信息,也就是说。这个没有提示确实很烦啊是吧。In。这什么字都靠手写。这。发送数据。我们把date打出来就可以了,OK,诶这不对啊,这块必须是英文,OK,那我们就可以了,那我们就编再编译一下,编译一下呢,我们再去去联调一下就可以了,联调一下看一下具体的一个情况。
28:17
整体来说呢,其实嗯,本次课讲内容呢,就是给大家说一下我们推送的一个消息啊,一个一个情况,我看怎么用终端吧,终端给大家打开。DC。OK,没问题,爸爸妈妈,那我们来。我们来我们的客户端,客户端呢,我们分开一点。好,这样子这样子不太好,我们背景换一个,换一个大家熟悉一点的啊。888嘛,那我们来看一下。我们这里,呃。
29:00
我们这里需要换一下啊,等一下。啊,我们看看这边啊。看他已经连进来了,那我们点一个。发送过去。对吧,我们看一下。等20秒吗?是20秒吗?诶,晚上收到了,没看到,没等一会20秒,这已经两条吧,这发送数据一二一等一会儿看能不能收到。等一下20秒。20秒也不长。记下时间吗?应该十九八七六五,呃,发了已经看到没收到了吧。第三个了,已经这是发射,这是收到了,已经。了解了吧,了解我们这个服务器有多强大了吧?是不是,是不是觉得觉得。越学越有意思了。这才刚刚开始啊,你现在现在我们给大家讲的其实就是一个房子那个。一脚一脚还就是相当于把屋顶上的那个房架,现在刚刚刚刚搭建一部分啊,前几节可是支点啊,现在可是把把那个屋顶的支架给支起来了。
30:10
像一些其他的。其他一些优化还没有去做,对吧,咱们再看一眼看又收到了吧。应该没骗你吧,是吧,定时可以定时可以发送,可以收到信息啊。这里有几个,五个大家看看到。看到第六个时候的,我就不咱们就关掉了好吗。鼠标在这儿看,鼠标又增加出来。嗯。啊,出来了是吧,这有个埋在这儿。六个好,我们关掉了,呃,那我们本节课呢,就到这里了,完了我们下节课呢,给大家啊,下节课是一个文档,就给大家介绍是不是文档我看一下啊。下节课是不是一个文档的一个形式啊。呃,14G10g可是文档给大家推荐一个线程池,那个蚂蚁的一个暗暗的一个一个线程池,呃,比较高效的,1000多万,1000多万并发都不是问题的,我觉得这个很高效,介绍给大家完了15节课开始呢,我们就给大家加心跳啊,大家一些超超时的处理啊,呃,心跳和超时处理呢,都是通过定时器给大家实现的,也类似于这总类似我们今天讲的。
31:19
大家把今天讲的熟悉一下。好,那我们今天就到这里吧,我们下节课再见。
我来说两句