00:00
各位,我们接着上面讲的内容呢,继续往下边讲解,那刚才呢,我们对我们的服务器端做了一个啊分层或者叫封装,这都可以,然后呢,我们可以看出来这种结构呢,啊,的确啊,就从扩展功能来说呢,的确是有它的优势的,这个不用质疑,那现在呢,我们只是把刚才的服务器端做了一个封装,或者做了一个分层,但是客户端这头呢,我们还没有做任何的变化。客户端这块呢,我们也要做变化,也就说现在我们完全对客户端的修改,客户端的修改呢,跟服务器端基本上是一样的,基本上是一样的,但是有一个细节,它这有个细节大家一定要保证啊,就说一旦我们这儿封装了过后呢,你你这个客户端和服务器端。他们一旦登录成功以后,登录成功以后,你一定要保证客户端和服务器端有一根。
01:02
连接他们在互相的通讯。因为这个连接是不能断掉了,所以说我现在对它进行一个改进,来来同学们现在呢,我们先说自己的思想,走一个这个东西啊,现在我们对客户端进行一个修改,好先把笔记拿过来。我们这前面讲的是这个功能,对不对啊,我拿到上面去,现在我们讲这个先修改,现在我们讲第二个。现在呢,我们修改客户端往下拉。修改客户端。啊,这个地方不好找啊,因为我这定位的定位的不太好。好,就这吧。那么现在呢?修改服务器端。啊,修修改客户端啊修改客户端。客户端同样也先先画出这个程序的框架图,然后再写代码,那么具体的步骤呢,我们一步一步来。步骤好,先把这个图画出来啊,同学们先把这个图画出来。
02:03
播种一。画出这个示意图。好,然后继续往下走,那么示意图呢,老规矩还是在这画,在这画好,我们画这边啊,同学们,那现在呢,我在这画个小框框。画一个小框框来把我的这个思路跟大家捋捋一捋啊,不然的话,这个听起来确实很蒙圈啊,这个呢,这个是我深有体会,好,这是我们的客户端。我们目前这个客户端的结构啊,我们这目前这个客户端结构呢,它比较单薄,它是这样子的一个logging。一个man一个U没有了,而且这个log在这写呢。显得有点不伦不类的,一个登录,咱就写了一个函,写了一个文件,那将来一个注册,你还写一个文件。显然我们这个文件。他不能给一个功能,就是一个具体的功能给你绑定,那以后就是一个功能一个文件,那完蛋,我们应该是把一个功能给一个文件绑定的,对不对,所以说呢,这个结构显然是不合理的,那首先呢,我们来看看应该怎么做呢,各位好。
03:12
好的,那首先第一个这个主文件还是要有的,这个文件呢,肯定是万变不离其宗,这个得有对好我先把它画画出来啊,同学们。我先把这个命点勾画出来。OK。放到这里啊,同学们,这是我们的闷顶沟。好,给他一个别的颜色吧,main.go写到这里来,这个main.go是干什么的呢?注意听啊,main.go它是显示的第一级菜单,它第一个任务是显示第一级菜单。第一集的菜单。第一级菜单。那第一级菜呢,就是大家看到的第二个呢,他必须要完成一个什么任务呢?就是说他根据的用户的选择,他根据这个用户的选择去调用,去调用对应的这个处理器啊对他根据。
04:06
注意听啊,根据用户的输入去调用,去调用那个对应的什么呢?这个控控制的这个处理器吧,叫处理器。那有些同学老师,嗯,为什么你这块没有这这个总空的呢。注意啊,同学们这个地方我就没有这个地方面点够了,我就直接去让它调对应的这个,呃,不同的这个处理器没有写这个总空了,原因很简单,因为一般来讲啊,同学们一般来讲这个总控呢,它是在服务器端,大家想一想你学的那个,有些同学学过像web web框架,你看web框架,因为你这个最最复杂的这个地方的逻辑大小,其实真正最复杂的应该还在服务器端。你想嘛,服务器,因为它你这个客户端说白了就几个菜单,我发东西给你回我就完了,但是服务器端考虑的东西东西很多,所以说这块呢,我就没有去写那个总空了,那你要说韩老师我写个总控行不行也可以。
05:04
啊,按照这个思路也可以,我这就做了一点简化啊,我就直接让他把这个请求发给了我们的对应的这种这种这个处理,比如说你假设这个要登录吧,要登录好,那么我就把这个请求直接呃让给我们的user process,这个还是一样的。这user process这个没问题啊,这个问题,那这个地方是干什么呢?它是处理处理和用户相关的相关的这种这种这种逻辑啊,业务或者是业务啊,叫业务更好一点,业务那比如说呢,你你比如说诶你要去注册了,你要去登录了等等等等,你可以在这写吗?比说诶我把这个网图片拿一拿啊古同学,比如你这有一个要登录的请求。对吧,要登录了,比如说你要去注册了啊注册了。注册。
06:00
等等吧,等等啊,当然可能还会有其他功能,因为这个东西可以写很复杂的东西,那将来你要发短信了,或者发消息了,短消息给对方,那么你就把这个请求呢,发给这个SM。啊,我再举个例子啊,SM,比如你要发传输文件呢,你可能写一个叫fire process等等吧,跟文件语音相关的呢,可能是叫VIIP,可能一般一般单词叫VOIP.process VO IP呢,你把他的声音呢,什么视频呢,图片呢,都通过这种大数据的,就是流量比较大的呢,我们专门再写一个,因为那个地方就还涉及到很复杂的东西啊这个网络其实其处理起来很麻烦的,好这里处理什么呢?和处理啊处理各位处理和什么呢?数据和这个短消息,短消息短消息相关的相关的逻辑。你比如说你比如说我们这说的私聊对吧,私聊我们就组他再说群,群聊咱们也组他群发啊。
07:04
啊,群发等等吧,就跟消息相关的,咱们就做它。OK,那将来呢,这个地方是也是一个调用的关系,说我根据你的请求,我调用对应的这个处理器完成相应的任务,对不对,诶这样是一个逻辑。当然了,嗯,那么这个地方呢,我们就具体化一下,你这个SM process,还有这个user process,肯定也会用到它的工具类,那么这两个工具类呢,实际上也是可以共用的,到时候我们可以把它抽取出来。也也就是说将来这个客户端和服务器端肯定有大量公用的地方,我们可以把它抽取出来,但是有一点啊,同学们,其实你单独写一份也没有什么问题。为什么这么讲呢?因为你公用的部分大,大不了就是我当一份下来。也也没问题,因为这个地方并不影响你的效率,只是说有两种管理形式,有一种管理形式呢,有些项目经理喜欢吧,诶,你是公用的吗?你是公用的,对,好,没问题,我就把这个公用东西拿过来,他们拿过来,然后呢,大家都指向这一个包包,这是一种形式,但这种形式有一个弊端,什么弊端呢?就是。
08:14
它有这样一个弊端,就是呃,如果说是公用的话。那有些时候是有个有一个小问题。就是你必须得保证。同步。啊,你必须得保证保证这个同步,不然的话你那边更新了,这边没更新也是麻烦事,还有一种思路呢,就是说诶你有一份你公用的为公用的,最后到了这个要上线的时候,大家再整合一下也可以。啊,所以说呢,这个不是大事啊,那我这呢,也把这个utr写过来。其实就把它拿过来用一下就行了啊,我在这也用用它一份,到时候可以把它再整合到一个包包里面去,这个这个这个工作量很很小啊,这个工作量很小,好,那么就是大致就这一个逻辑,我这里面还要设计一个东西,同学们还有一个特别重要的文件要出现了。
09:04
这个文件呢,以前是没有的,但是我要把它分析出来。大概在这里呢,我会新增一个文件,这个文件呢,我把它取名叫server。SERVER0购。那这个server点购呢,可以理解成这样一个含义,就说因为你将来这个客户端登录以后,你不会马上退出。你登录成功过后,你退出干啥,你有病呢,对不对,你刚刚好不用登上去,正准备聊天,你要跑了,说这个serve呢,我们可以理解成他要完成这样几个任务,第一个任务它要显示。显示登录,登录成功的一个界面必须显示出来,第二个它有个特别重要的能力,大家想。你上线以后,上线以后是不是别的人可能跟你通讯了,跟你聊天,还有可能是你的好友上线了,你的好友离线了,甚至有一个好友群发一个消息,你是不是这个客户端这边应该拿到这个消息啊。
10:05
你必须得做这个事情,那么你之所以能够拿出消息,你连接已经成功了,难道你会反复的去取吗?显然不可能。所以说你这边还有一个任务,就是要保持。保持和。和什么呢?和服务器端的一个通讯。也就是说它这样会起一个携程。它为什么起携程,它这边必须要启动一个携程,即即它要启个携程,它启动一个携程,这个携程干什么呢?就是不停的在跟服务器之间进行一个交互,比如我不停在读,你有没有给我发东西啊。你如果有发的话,我就会体现在这个界面上。你看你为什么你上了QQ,你上完线过后,诶,你上完线,等到你的好友上线,你嘟嘟嘟嘟嘟嘟就响了。他怎么来的呀?那肯定是你你又没有再次登录啊,那肯定是你的客户端登录成成功以后,他一定会在底在偷偷的跟你在进行这个这个服务器交互,所以你看你上完一个网站上腾讯啊,你上这个你上一个客户端,你会发现你流量本身没有用,但下面不停的传输,他干什么事啊。
11:16
一直在跟服务器保持交流呢,如果服务器有东西他推过来,它就它就会展现在你的页面上,所以说他还有个什么事情呢?它第一个显示登录成功界面,第二个他还要起一个携程保持跟服务器端通讯,因为它不会退出,第三个一旦服务器,他发现服务器有推送的消息,他应该把这个页面相应的数据显示在。它这个客户端界面。你比如群聊聊天,你怎么知道有人给你发发短信呢,对不对,你不可能反复登录嘛,说他还有一个特别重要的事情什么呢?第三点就是当。当读取到读取到服务器端,服务器端发送的发送发送的消息后,消息后好就会就会显示在显示在客户端,显示在界面上,你比如说有个有你的好友上线了,打个比方,你的好友上线了,诶你你这边读到了,读到过后呢,你就把那个好友提示一下,诶嘟嘟嘟嘟啊,当然我这个嘟嘟肯定发不出来了啊,就说你可以跟他一个文字打出来说诶你的好友上线了。
12:22
因为你后台这个没死掉嘛,哎,所以说这个地方很重要,那也就是说将来还有一个逻辑,就是他一旦登录成功以后呢,我让他去调它。哎,它是这么一个关系,好了各位朋友,关系我就分析完毕了,大致就这么一个东西,现在呢,我们就要开始来进行一个剥离了啊,思路大家看有没有问题。啊,因因为这个客户端它比较简单,客户端一般不涉及到数据库。但是也有很多东西啊,比如说你客户端一旦退出,会不会保留一些东西,你你你们有没有发现,你跟腾讯聊完天过后,你会发现你的你你的聊天记录,下次打开还有啊。
13:00
那么有两种可能性。你跟别人聊天,别人给你发个图片,你发现你发现即使你离线你你还能看到,诶诶怎么以前我看的那个视频,还有那个图片,怎么我没有,我没有上线,我也看得到,因为他会偷偷的,也会在这个地方,根据你的需求,把你的这个对方,比如说张三给你发的东西,他偷偷的存在另外一个文件,他以文件做一个数据库给你存进去。你们你你们可以去看这个,就是说经常你们看看那个微信也好,还有你们QQ也好,你会突然发现有一段时间,他说你的什么什么空间已满,要不要亲一下。为什么?因为他会把你这些东西存在文件里面,这个时候呢,客户端一般他不会直接存数据库。因为数据库你你你不一定会装嘛,但是它会有文件形式来保存,OK,那就那就可以把我们文件那一块把它把它结结合上了啊,你可以代代表一个,就是说这个这个这个保存数据好了,那么这个思路有了过后呢,我们就来实现这个代码,好这是我的思路啊,同学们先把思路给它整理到这里。
14:04
好,思路也很清晰。下面呢,我们有了思路过后就准备完成啊,第一步我们画出了。画出,画出这个示意图。对,画出示意图。好,关于这个思路的分析,我们就先给各位介绍到这里。
我来说两句