00:00
好,同学们,那刚才呢,我们把这个思路已经给大家做了一个分析,现在呢,我们就来代码实现,好代码实现。好,那代码呢,我们就根据刚才的思路再给大家写一下,快速的走一走啊啊这块呢,我就直接写了userr mgr.go好。Package,然后呢,这边这个包包是process,把这个包包粘过来,我们都用统一的包PROCESS2。82。然后呢,这个地方引入必要的一些包,然后它因为是个结构体,所以说我们这直接先去定义,我声明一下,这个结构体叫type,然后呢,它的这个是user m tr,然后呢是structure。那这个结构体里面呢,最重要的就是刚才我们分析的是online,这个users,这个map,这个map呢,我们直接写进来。
01:00
它的K是一个T,它的值是一个指针,指向谁的指针呢?指向user process。Process的一个指针,好,然后呢,我们因为这个这个user manager啊,在整个服务器里面有且只有一个,所以说我们把它直接声明成一个全局变量,注意因为这个user manager这个实例啊,实例在服务器端,服务器端有且只有一个,且只有一个,只有一个,第二个呢,就是因为因为在很多地方都会使用到,因为在很多的地方都会都会使用到。因此,因此我们把它做成一个全局变量。因此我们将其。二将其定义为,定义为一个全局变量。全局变量,OK,那既然是个全局变量呢,这个很很easy VR,然后呢,咱们这写一个全局的user mgr,它的类型,它的类型呢,就是它当然是个指针啊,是个指针类型。
02:14
OK,然后呢,我们完成一个初始化的工作,完成一个初始化的工作作完成对谁呢?对这个user manager的一个初始化的工作。初始化工作。哎,初始化工作。好,这个地方我还是尽快的保存一下。好,那这个初始化工作做完过后,我们这有个NT啊nt fun。Itit,然后呢,是一个函数对不对,是一个函数,那既然是个函数的话呢,我们直接就对它进行初始化走。对于,因为它是指针嘛,所以说咱们来个符号,然后是u manager。里面呢,它重要的一个就是字段,就是online user,我们给它赋一个值啊,初始化一下make make,它的类型是它。
03:09
诶,它的类型是它我们上来呢,先给他1024个这样的一个大小,好啊,那现在呢,就来完成对他的增删改查,就是添加添加添加什么呢?添加这个,呃,就是添加这个就是。这样子啊,给完成。完成对哪个呢,对这个。Online user的添加。那添加的话呢,我写一个函数放,然后this轴。给它连关联一个添加方法,我把这个名字叫做爱的,爱的什么呢?Online online user。那么你这个us,你给我一个什么东西,你给我一个什么东西,显然同学们,我们要维护的实际上就是这个user process的一个,呃,一个指针,所以说你在这呢,就直接给我传一个user process指针就可以了。
04:08
就可以了,因为这个u process里面呢,它有这个连接,现在呢,为了好管理,我们也应该再加一个字段,什么字段表明这一个connect到底是属于哪个用户的连接,你不然的话到时间呢很麻烦,所以说这里应该给他来个字段。对,应该来个字段,所以这里呢,我们需要增加一个字段,增加一个什么字段呢,各位朋友。增加一个字段表示,表示该collect是哪个用户的?哪个用户的,OK,那这个很easy很easy user ID user ID就是一个特类型吗。就是一个好,有了它过后呢,我们这地方就轻松了,那这地方我们来一个指针。叫做up啊,简写up,然后user。
05:02
User process pros好,你给我这么一个东西,那我怎么加进去呢?非常简单,其实这个添加同时也是修改啊,如果你要改变的话也是一样的,那就说我们找到这个this,点它的这一个map的名字,然后里边是这个up。带进来的或者带过来的那个user ID,然后再把APP给他。好,这就是添加,那如果说某个用户的有这个这个发生变化呢,也是修改也是它了吧,把它放在一起了,这是添加,紧接着我们来完成一个什么呢?删除删除,假如有一个用户他离线了。他有可能注销了,他他退出了吗?那有可能删除这个功能,删除这个功能也very的easy,各位朋友把它复制到这边来。
06:00
那把这个名字改成delete啊,Delete online user对不对,他走了delete,那这个时候呢,你就给我传一个这个用户的ID就可以了,就是你要把哪个用户干掉啊,你得告诉我,所以说呢,你给我传个user ID。完事,那怎么删呢?非常简单,从一个map里边把一个KW删掉,有一个专门的内置函数叫delete,对不对,Delete,然后呢,这边我们只需要把这个传进去,呃,对,谁删除啊,显示this的。这个online。对,这个map,我们再传一个他的ID号,这个ID号就是user ID。啊,这个就是删除。应该没有写错吧。好,Delete啊,前面是它的map,后面是它的值对不对啊删除那删除有logo呢,我们还要有一个查询。
07:02
那查询里面最关键的一个任务就是大家可以看到,因为待会儿呢,我们要去返回,就是当一个用户登录以后,我们要去返回当前在线用用户有哪些,所以说他必须有一个get all online user这这么一个方法,我要把所有的这个在线的用户呢,诶给返回去,因此呢,我还需要一个方法,就是干什么呢,返回。返回当前所有在线的用户,OK,那这个很简单啊,怎么写放同样给他绑定一个方法啊。哎,给他绑定一个方法叫user mgr,然后呢,我们叫get all get all on on online user。有点事吧,加个S,那这个时候呢,直接简单一点,暴力一点啊,直接把这个给我返回去就可以了,那你要用什么,你自己用啊,你自己用啊,你自己要什么,我你自己拿去玩就行了,我就return回去,this.on online。
08:09
Online user。有这好,我这有没S有S。好,返回还有一个最重要的功能呢,我觉得还应该提供一个方法,就是给别给你传递的一个ID,你给你给他返回一个对应的这个这个map的值,因为有时候呢,呃,你可能是要针对点对点的这个聊天,比如说比如说将来呢,呃,你张三A客户想给B客户端说一句话,那肯定A客户端说我要跟B客户端说,那么服务器这边呢,他会从这个map里边拿出来。拿出来B客户端,它对应的这个user process,然后给他传东西过去是不是,所以说我们应该再提供一个根据ID返回这一个,这个这个对应的user process的一个功能,好,那这个呢,也很easy,咱们写这么一个东西。
09:02
啊,就是根据根据IDID返回一个什么呢?User process,返回这个对应的值,对返回对应的一个值,好very简单啊very简单,那么这样写fun。Function,然后呢,Function,然后十,然后user manager。好,咱们写个get。盖这个啊。The user by ID。By ID,好,By ID,那既然是by ID,你就给我传一个ID过来吗?那我给你返回一个什么东西呢?大家想一想啊,这个时候呢,显然我们主要返回的还是这个东西。对不对,因为这个东西是核心是关键,你想你想你想去找,想服务器上去找到那个人肯定是靠他嘛,所以说呢,这地方我们直接返回一个这样的指针就可以了,哎,给你这个东西。
10:01
OK,那这个呢,诶我们的我们我们幻灯片还没打开啊,幻灯片还打开忘了啊对不对,把它打开啊,有时候呢,要适当的这个看一下幻灯片它的一个,呃,我们的一个步骤好还把幻灯片定一下位。害怕幻灯片音乐会,我们刚才是说到这儿了。对,这个地方已经说过了,在这里。往下走。好在这你看我这里面也也有一个GET2吧,就是返回它,但是如果有错误的话呢,我们返回一个error也要返回,如果有错误我们也返回这个东西,所以说如果有错误就是找不到呢,也要给他提示一个信息,所以这地方我们有两个东西返回,一个是up。好,还有一个是A。因为有可能有错误。啊,有L2好,我把它呢括起来。括起来。好,括起来过后,这边应该有一个逗号间隔,对吧,应该有个逗号间隔,那你怎么去找呢?大家还记不记,大家应该还有记得,我们在前面学过map如何如何从map中map中取出一个值。
11:16
啊嗯,还有还是带检测的,因为有可能找不到这个嘛,好带检测的。带检测的。再检测的方式,我记得是这样写的啊,我记得这样写的,嗯,应该是这样写Z点。把这个online取出来。然后呢,把你传进去的user ID放进去。好,第一个呢,会返回这个up,返回这个up,第二个呢,返回一个OK。返回一个OK。好,那么这个时候呢,这个OK,如果为甲。我们就返回一个错误信息,就是就找不到这个人就行了啊,就就就给他报告一个错误信息就行了,大家看我这样写啊,大家看能不能看懂,如果OK。
12:04
为甲。取反就为真,那么代表这个情况,就是说你要找的这个用户呢,在当前是不在线的。就你现在要找的这个用户是当前不在线的,就说说明注意听啊,说明你。你要查找的,你要查找的这个用户,用户怎么样,用户当前当前不在线。不在线为为什么说不在线呢?因为我我我都找不到吗?这个时候呢,咱们给他返回一个error就行了。返回一个L就行了,那这样子写个L。L给他定一个啊。等于format点。A。A e or e or rf,这个呢,大家看应该是没有见过这个是吧,这个地方可以把一个格式化的一个L给他返回去,给他复制,那这写个呃,用户ID不存在,用户什么什么不存在,不在线不存在也可以不存在。
13:10
那么这个时候呢,我们把ID传进去,就说你要这个不在不在线,然后return不走了,就相当于说我自己格式化了一个错误返回给你。那么up呢是什么?肯定是个空,取出来是个空,好否则那否则的话呢,就是正确了,那正确的话呢,直接return就找到了嘛,就就回去。好,那找到你这这方是OK,也也是真的up也有了,就反馈他,因为这是用的命名的啊,这方error也有了,A error这方有这里啊error是有的,如果你这没有错误,L就是一个空,好我们来看看现在的方法有哪些啊,有添加有删除,有获取所有有获取单个。有获取单个,然后呢,还差一个修改,修改呢,其实本质就是爱的,大家都知道map呢,它是这样子的,它的K呢是唯一的,如果说你给它传进去一个相同的K呢,它相当于去替换了原有的那一个,那一个值对不对?好,正三改造就写完了。
14:14
这张改就写完,那么我们来保存一下,看看这个代码有没有毛病,有毛病我们调一调。好的,这地方有一个问题啊,这么一个少了一个,少了一个逗号,诶少了一个逗号保存一下。Okay。好,这个代码呢,咱就搞定啊,这搞定我们先把这段代码先给大家整理到笔记里面去,我们先写了一个,就是第一个最重要的文件,就是这边编写了第一步啊。哦,编写了。编写了这个这端。我每次都要跟他说,我现在是写的哪一端啊,不然的话待会儿后面越听越越蒙圈。Process。下面咱们是哪一个呀,我们写了一个叫1MGR等go,那这个代码呢,我们就写完了啊,待会如果需要有改进,我们再逐一的改进就行。
15:11
好,我把它截取一个小视频啊,小小的这个图片给它放到这儿来,大家心里面要有个底啊,一个最核心的功能就完成了。最核心的功能就完成了,好这是26,接着呢,我们把它继续往下截取,诶27到最后全部搞定。27到最后全部搞定。好的。保存一下。27。好,这是我们完成的一个第一个,第一个核心的一个文件。
我来说两句