00:00
那同学们可以看到啊,我们现在已经有了它了,既然有了它了,过后呢,而且初始化的工作也做完了,下面我们应该做什么事呢?同学们想,因为目前我们现在还要完成的功能是当他登录以后,我们就把这个东西放进去,所以说你在事先呢,这个用户列表肯定是有东西的才行。对吧,你是首先是有东西的,那什么时候往里面添加呢。非常的简单,各位同学,就是当一个用户登录以后,登录成功以后,我们就把这个用户的ID,还有他的process给他放进去就完事了。好,所以说我们完成这样一个功能。找到我们登录成功的那个位置,说现在你要找位置了啊,这有一点小难度,那么我们是在哪里表示这个用户登录成功呢?哦,寻寻觅觅,我们发现是在这个地方。是在登录的那一个函数啊,那个那个方法里边在这。
01:00
我们在这表示这个用户是登录成功了,那既然你登录成功了,我们就应该把这个用户的map放进去,好注意听。这里。这里因为用户。用户已经登录成功,登录成功,登录成功。于是我们干什么呢?我们就把该登录成功的成功的用户。放入到放入到哪里去,放入到我们的这个user manager这个它的字段里面去,放到我们这个全局的user这个MGRR这个中,这个中。那这个当然很简单了,怎么很简单呢?大家想一想,因为到我们这一步的时候,各位同学它其实呢已经被初始化了,你就直接拿来用就可以了,而且他们在同一个包包下面,因此呢,直接用有点。他找到它啊点。
02:02
爱的。爱的一个方法,就是刚才我们写的爱的这个在线用户对添加进去。添加进去放进去就可以了,那放进去的时候呢,它需要。一个东西一个什么呢?就是你现在带过来这个Z。大家想想是不是他显然就是它,因为你到这一步的时候,这个user process已经被你搞定了,所以说呢,你把这个this放进去就可以了,这点理解起来有一定难度啊。说实话,今天你要能。自己能够把它想明白啊。还是很有很很不错的,那我找到它,把它放进去了。也就这个方的是谁呢?就是你当前在登录成功的这个这个用户对应的那个user process那个实力。这个实里面有代表有什么呢?它里面又包含了一个字段,就是connect。但是还有一点我们要注意这个this呢,因为我们在前面已经已经把这个u process做了一个改进,它里面还有一个新的字段叫URID,所以说呢,我们在添加之前呢,把这个东西给它放进去,这个东西很简单,URID就是你登录那个用户的ID,而登录用户ID呢,你在这其实已经拿到了。
03:21
这能拿到的。啊,就是注册的地方啊,别找错了,在这儿。你在登录的时候,其实这个messages你已经把它反序列化成一个loging mes,诶这个mes里面它是含有一个UID的,就是你那个用户是哪个用户登录的是不是啊,所以说呢,这个地方还要做一个非常重要的工作,不要忘了啊,这是连带的啊。也就是说你要找到这儿呢,你还要做一个事情。干什么呢?还要做一件非常重要的事情,将。对,不然的话,后面这个全部跑不起来,将登录登录成功的这个用户的这个ID,当然这叫有有有有点ID啊,有点ID付给。
04:05
付给谁付给我们这个Z4。没问题,那就是this,点它有个user ID,就等于你这个logging。Message这个这个大家想一想,这个log message我在前,我在上面已经把它反虚的话过来了,就它这个里面呢,大家回忆一下它的结构是什么样子的,它的结构里面,它真的是包含了一个UID,这个是他登录的时候给他给他搞进去的,所以说呢,现在我们给它是没有任何问题的,没有任何问题,所以说我在这把它放进去啊,叫user。ID了。这个就加进去了。好,这一步又搞定,那时候这步搞定了过后,那就意味着什么呢?大家脑海里面要有个想象能力,你应该现在想象到这样一个东西,就是说当有有有一个用户登录的时候,我们又加了一个进去,当有一个用户登时候,我们又加进去,再有一个用户又加进去了,能理解这个东西吧,就当只要有一个登录成功了,我们就往这边放了他的ID和他对应的这个这这个connect。
05:07
你的脑海里面想象一个动态的想象,好,那你有了这个东西过后,你得用它呀。你现在首先在用下,你先干什么,你现在不是想完成这样一个功能吗?你想完成的功能是当用户登录以后可以得到。当当前在线用户的列表就是有哪些人在线呢?诶,那你怎么才能让登录的人知道有哪些在线呢?你怎么样才能让他知道呢?你只有一个办法,就是在返回的这个包包里面给他加东西进去。你要么给他原先那个原先有的那个那个麦里面加东西,要么你创建一个新的一个结构体,反正你要有东西。对不对,所以说目前如果只针对这个功能而言来说,还是比较简单的,我直接对我们的message message的那个结构进行一个小小的改进,因为你现在原先这个描述能力很弱了,你原先你看啊,你登录成功过后,你你返回了一个叫logging。
06:11
Response message,这个response message你看看它,它目前的结构,它很脆弱,它其实就包含了一个code和一个error,没用啊,这两个信息在客户端,到客户端他也拿不到东西啊,所以说这地方应该再加一个,至少要加一个。在线用户ID的切片。好,大家分析出来这个原因了没有,这这地方是有点考人的啊,同学们就说我可以这样讲,就是说其实这个代码量,就说这个你看起来这个聊天的东西啊,它其实像微信这个,你看起来功能好像很娱乐化,其实它是很难的。它仅次于像财务软件,财务软件它的难度是业务逻辑,而我们像聊天的这种东西,像QQ啊,这些搜索,它难道是技术。QQ你简单说一下,哎,不就聊天吗,说哎他发消息你收到就这么简单一个事,其实逻辑显得比较简单,但是你要从业务上实现,还是有一堆东西要做,所以这地方我们要增加一个字段。
07:11
你要分析出来,就要增加一个字段,很难,不然的话你就你就走偏了,增加一个什么字段呢?就是用户的一个切片,就是保存,朱婷保存。保存用户ID的用户ID的一个切片。至少现在是这样子的啊,现在是这样子的那。怎么保保存的切片呢?非常的简单嘛,那你就这样子,Users就行了,或者是user ID都都行啊,我就叫user users user吧,User ID user ID加个S吧,就代表很多这个user ID,好,那现在呢,我给他搞一个切片,为什么搞切片呢?因为你这个地方你不知道我将来有多少个,你只能搞切片。
08:01
搞切片比较合理一点啊,但是说老师我加一个map行不行也可以啊,我这就就搞切片了,好搞切片好这个地方大家知道为什么做这个东西了啊,好这一步咱们又完成了。他那完成这一步过后有什么用呢?来各位分析,当有一个人用户登录成功以后,诶。咱们不是要给返回一个包包吗?在这方返回,在这方返回一个包吗?那现在有办法了,我们现在把它返回到log message里,这个users,这个切片给它。搞进去它就有东西了,所以说思路就就很自然的。出来了,那现在呢,找到我们的这个user process登录的位置就这。好,我们现在不是加了吗?不要不要着急返回,不不要着急返回,你还有个事情。你还有一个重要的事情。将当前在线用户。用户。的ID的I放入到放入到哪里去,这个里边的这个字段。
09:06
放到这个里边的。User ids。好,我看看我别写错了啊,同学们。我这叫做user ids users叫叫users ID吧,这样子就好了,就很多用户的ID,这这里能看出来啊,好,我这样取个名字,重新取个名字,好我放到这里面去,问题又来了,怎么放?哎,说老师你不是刚加进去怎么放呢,你不要,你不要用这种思维,你要想象到这个里面其实已经可能是好好多了,只是你当年把它放进去,那你肯定就便利嘛,那便利呗,那就便利。便利谁显然是便利,我们这个user manager里边的一个东西,不是便利,它是便利它里面这个online。Online这个users它是个切片。便利,然后把它搞定,For循环。
10:02
好,我们是需要他什么,我们需要的是他的那个ID值。说这几个ID,它里面那个暂时不要,就说它里边这个东西呢,我还暂时用不上,我现在只要一个ID,因为现在不涉及通话,如果说我是要群发消息,我点对点的话,那你这个connect就非常有用了,现在我还暂时用不到你的connect,我只要你的ID,因此呢,我先不去取你的那个user process,好,那就range。什么玩意儿呢?就是你们刚才说的user mgr里边的,注意听啊,On。On。Nine users。因为它是个切片,好,我不停的便利,我便利的目的是要往这里面加东西,怎么加。怎么加啊就完了。我连make都不需要。大家看这这有点飘飘逸了啊,就说你现在要想象到你服务器端有这么一个东西啊,你得这么写啊end。
11:02
对谁对他?加个什么ID?是不是这个道理,你不停的编利,不停的编利,就往里面加了很东西吗?你for循环,For循环a for range来一个N据来,来一个N去,那你最后这个logging logging message里面就就有这个东西了吗?显然是这样子的。好,其实这个时候呢,同学们就可以测试一下,就是你现在可以看看到底我返回的这个log response里面有东西没有呢,肯定是有的。好,现在我们接着我就不去测了啊,因为我相信没问题,有现在你要想象的是,在你返回的这个垃圾里面已经有有一个切片了,这里面就是你当前在线的用户的ID,好,你这写完了过后,你没有完事,你还得做件事情,你得干什么呀,你也想一想。你这拿到这个东西,你要回给他,你回给谁的,你回给客户端的这个user,他登录成功过后,不是他接收这个,呃,Log response message吗?你要把它解析出来,展现出来就可以了。
12:06
好,下面呢,我们接着写下一步工作来啊,这个地方已经把它封装起来了啊,封装起来了。保存一下,看代码有没有毛病。看代码有没有毛病,好像。没有什么毛病,那这一头马上就要写客户端了,因为他返回给你,你没有用啊,找到我们的客户端。那这个客户端在哪个地方去写呢,又得动脑筋呢。我在哪写啊,显然是在登录成功时候写比较合理,那就找到我们process,看到没有,现在你突然感觉到这个分层是很有用的了,找到我们user pass,我们登录成功是在这。我们登录成功以后呢,我们是在这个位置,哪个位置看一下。OK,登录成功,登录成功,我们到这个位置来了,应该是在这里边吧,好像是登录成功,对这捞紧捞紧完了过后往下走,往下走,我们在这儿。
13:01
在这儿。200哦,原来在这里200如果成功,那如果成功的话呢,这个logging看到没有,你这收到的是logging response message,这个message这里面呢,就有我们的东西了。对,你现在可以在这马上显示一下你当前在线用户有哪些。当然了,嗯,当然大家肯定想象到说老师登录登录我能我能我能去把它写出来,等到登录到里面去,我还想看,还能看得到吗?显然你还看不到。你还得想别的招,不过我们先把第一步做完,好现在做啊,现在我登录成功了,我就把它的在线列表给它打印出来,注定这这这这一步很重要啊,好,现在可以显示一下,显示当前在线用户的列表。怎么办呢?很简单便利,这个logging response里面的一个叫user,是ID,因为它是个切片,它是个切片,那就直接写了啊,Format不跟着老师思路说,当前在线用户列表如下。
14:11
如下啊啊,怎么个如下法呢?那你就遍历呗,For循环。这个时候我们要编辑的时候,是关心到哪个字呢?这个时候我们关心的又是它的值,而不是他的索引。他说老师,你怎么这一下一下就蒙圈了呢?这个索引它是按照你顺序加密,现在你关心的是它这个ID嘛,所以说这个时候呢,你关心的恰恰又反了,这个取出来才是这个用户ID,这个值,这个切片里面值才是我们存进去的那个在线用户的ID,这点大家大家提示想清楚啊,认我要便利的是logging res。Message,点它里面的users ID,对,因为它是一个in的切片,你到这一步的时候,同学们啊,你已经反虚化成功了,也就说你到这一步的时候,其实这个logging response已经是个结构体了,好,现在你要做的事情就是展现出来。
15:09
来吧,我给它格式化一下。啊,用户ID,用户ID。等于啊,这样直接L一下就行了,好,等冒号来一个斜杠T,打印出来V,但如果你为了好看呢,你把这个V直接叫做呃URID也可以,但是这个很容易。很容易蒙圈啊,这个大家知道,那就就叫UID了,还叫V吧,有时候有时候反而用V还简单一点,好打印出来,打印完了之后,我们当前在线用户列表就取出来了。就取出来了,好,那么这个时候为了好下面好看呢,我给他来两个换行,哎,来两个换行,好朋友们验证一下我们代码能否真正的跑起来。能不能跑起来不知道啊,这有代码有错误。写错了。L少了根。
16:01
好,来玩一把吧,整个保存一下啊,看看我们第一个功能有没有完成。第一个功能有没有完成,来运行一下我们的代码,现在因为要因因为你这个跟服务器有关系,所以说我要先把我们的这个red启动起来啊你啊这个red你不启动,呃,你也没办法登录,因为我们现在已经是跟服务器这块有联联系了,好找到他先启动我们的red。先启动我们的red来启动它,然后呢,客户端启动一下,客户端其实不是必须启动的,但是呢,我想把我们的用户那个原先不是有些用户吗,乱七八糟的容易搞蒙圈,我干脆把它清掉重新搞一个啊,干脆把它清掉重新搞一个,好我们现在看一下这个H啊。H,呃,有一个H00,呃,删掉它啊H。呃,Get。Get,好,这边是有users。
17:02
啊,我们是删掉一个是我看看是怎么删的h delete是这个吗?是这个吧。有没有直接一个delete啊。Flash是吗?Flash怎么写的flash,然后什么DB就可以了是吗?没没有空格就可以了吗?好,默认是不是删除当前这个,好好把所有都清空了啊,我我再看看还有没有东西,我们以前有个100号,看看还有没有get,然后呢,有个users里面有个100号,先把它干掉100看看有没有。不有了,非常好啊,现这个干干净净的东西,干干净净的好,那现在呢,这也启动了,我们来玩一把,找到。找到我们这个D盘进到这里面去,然后呢,在这个src里边进到这里面啊,不到里面去了,因为他在外面进行这个编利,好把这些文件先删掉,我都不要清掉,好来吧各位同学,CDCD。
18:02
好,首先呢,启动我们的这个,呃,服务器端,先把服务器搞定,我们先编一下go。Build build,然后杠O,然后呢,Server server.exe好的,然后go_code对,然后呢,我们这个是chart room chart room。然后呢,呃,我们这个地方是server这个包包,Server包包里面呢,有个may好的编译。好,第一个文件,我们客户端就呃,服务器端就就OK了,我们把它砌起来。运行起来。好的,没有任何问题,第一个搞定,紧接着我们再起一个后端,后端至少要起两个才行啊,同学们要起两个才行。好,这个地方呢,我们再来起一下go。Go来走一个啊,还要编一下各位同学go build build-O,然后呢。
19:01
CT对不对,点exe,然后呢,Go。Cold。当然是chart room。然后呢,找到我们client client下面也有一个包包叫主包,没问题。好,现在呢,我们先启动它一下client。好,我们来运行第一个。好,现在呢,我们先注册,因为现在什么人都没有,你现在输一个100,还有一个123456,这个呢也是不存在的,他说该用户不存在,好,我们现在注册一个吧。好注册,我先注册一个100,然后呢,呃,它是123456,就给他输密码啊,比如这个人的名字叫汤姆。好,注册成功,我们现在让他登录一下,看看情况是什么样子的,好,我们让他登录一下,走,现在呢,我直接这个登录聊天室,登录聊天室100号。好,然后呢,请输入用户的密码,好,我就数123456,注意看啊好看服务器端这边有什么反应没有。
20:08
服务器这边呢,应该会待会儿会读到一个包包啊,他说你应该登录它会返回一个信息好回车。好,我们可以看到用户ID,第一个ID已经在了,就是我自己已经在了。我自己在待会,待会我要你把自己去掉再说啊,大家看后台还在不停的等待服务器给我们发别的包,这个将来就会有用,我们再登录一个包,我们再登录一个,好,各位同学,各位同学不着急啊,来进入到这里面,我们再起一个用户,现在的情况是这样子的,同学们。我先把这个关掉,服务器这边呢,先不关,他看后端客户端现在已经有一个人在线了。有一个人在线了。好有一个人在线呢,然后呢,我再来登一下,他家有一个100号啊,现在我在CLA。好的,现在呢,我先注册一个200号,200号,200号密码呢,为了好记,我也123456啊走,他的名字叫Jackie。
21:09
回车好,现在我登录成功,我现在啊,我先注册成功,我登录一下一两百号走密码123456,好同学们看,我看到有两个人在线,100和200正确,但是很奇怪的是你这边没有变化。这是不行的。而且大家有没有发现这边还有一个很恐怖的事情,就是如果我输一个一,你还能拿到这些用户吗?拿不到了,因为他只给你返回了,一次性就跑路了。所以说现在还涉及到一个很很很麻烦的事情,就是你客户端这边还得有一个东西能够维护。在线的用户。说这东西并不简单,明白吧,好了,那关于这个代码呢,我们先给大家聊到这里,待会儿呢,我们再继续讲解。
22:00
休息一会儿吧。
我来说两句