00:00
好同学们,我们接着呢,上午啊,上面前面讲的内容呢,继续给大家来进行讲解,那现在呢,我们完成一个群聊这么一个功能啊,那群聊这个功能呢,我们也分为两个步骤来完成,咱们第一个步骤这样子啊,当一个用户上线以后。当一个用户上线以后,可以将群聊的消息发给服务器,服务器可以正常的接收到。这第一步就是说我们可以把。把这个客户端发送的这个消息呢,发给服务器,服务器那边可以正常接收。好,我们来想一想,这个东西怎么做。做下我们的笔记。啊,做一下我们笔记,把笔记呢,先给同学们打开,诶打开,然后呢,我们来先分析一下这个思路怎么做啊。那同学们想一想,这个怎么来完成呢?这块倒还变得比较简单了。因为你现在已经进入到server.go显示的这个界面。
01:07
看不到是吧,啊,这server点够它能够显示哪块页面了,大家看它已经可以显示这个页面了。那这个时候呢,比如说我们输入一个二,输入这个二现在是没有反应啊,输这个二呢,我们希望它能够干什么呢?提示你要说什么内容。比如说我们提示你要给大家,你想给大家说点什么,然后呢,它就提示一句话呢,让你输入好,那输入的时候大家想一想,我们怎么去完成呢,那肯定要找到一个位置,就是找到server顶购的这个。相应的。位置这儿。叫做发送消息。这个地方。好,那他这边肯定就会输入他要发送的这个内容,那问题又来了,你既然要发送这个内容给服务器,服务器肯定拿到拿到这个内容来进行转发,那这个时候每个人的想法可能就不一样,我是这样来设计的,同学们我想这样来做啊。
02:05
嗯,待会儿呢,我们在这儿写一个,写一个新的一个包。啊,比如说我待会能构建这么一个。这么一个结构体,这个结构体呢,我们是新增的。比如我取个名字就叫呃,SM。短消息SM message。啊,这个消息,那这里面呢,我们要包含的内容是什么,大家可以想一下哈,这边包含什么内容。肯定要有用户的ID对吧,你肯定要有用户的ID,看有比如说有user ID。还有呢,用户的名字。比如说有用户的名字,就是谁发的点点点肯定还有一个特别重要的东西是什么呢?就是你要发送的内容是什么,Content。好,当我们这么一设计的时候呢,我们发现有一点不好了,因为我们发现这种设计方法呢,没有有效的利用前面我们定义好的结构体。
03:09
大家有发现啊,你说白了,你这个消息主要分成两大块儿,第一大块呢,第一大块就是你这个SM要发送的这个。发送的这个这个内容是什么。第二大块就是你,你这个地方呢,就是发送的信息是什么,呃,一个是这个发送人的信息,就是你是你你是谁,第二个你把这个信息是什么,如果你是点对点的,聊的话,还麻烦一点,点对点,你还得告诉我,你要把这个消息。发送给谁?那既然如此,那么我们干脆就设计成两个部分,一个部分呢,就是userr,用我们原先学过的继承的这么一个东西,一个是userr,用一个匿名的结构体,然后呢,这边是内容就可以了,这是第一点,这是第一个我们分析出来在客户端我们要增加一个这个东西,那么接着再来分析,我们还要什么东西呢,大家想。
04:12
你既然要把这个消息发送出去,那就需要你客户端这边也应该维护一个很重要的连接,就是你的连接,现在你在维护吗?你好像没有维护,你只是在用,你没有维护,也就是说当你要从这发一个消息给服务器的时候,你突然感觉到你你没有连接了,你的连接在哪里。你的连接根本就没有,你的连接虽然在这儿一直用,可是你怎么去获取呢?大家看你的连接其实在这里一直在用,确确实实你也没关闭,你看这你在不停的用这个,呃,Collect在读东西。可是你在哪儿去取呢?其实你一直没有保存,所以在这样一个情况下呢,我们。我们自然就应该感觉到我们应该加一个东西,在哪加呢?我们在这个model里面加一个新的东西叫current,就是当前的这个用户,这个命名呢,就看你的,就看你的习惯了啊,我在这再加一个,在model层加一个东西。
05:13
加一个什么东西呢?我加一个这个东西。注意听我在这加一个这样的一个内容叫model,下边我新建。一个结构体叫current。Karen,这个有点。KA,这个有点。当前这个有人。好的,当前这个UR呢,诶这里面肯定也有他自己的信息,对不对,Current user,那这个是个结构体,它应该包含什么呢。我觉得它它至少要要包含这么两个比较重要的东西啊,嗯,我们分析出来,首先它有一个连接,必须由他给我维护住。这个连接就是你在登录成功以后,你获取的跟服务器进行通讯的这个连接,第二个呢,嗯,他既然是current,他应该也有相应的用户的信息。
06:07
对吧,所以说呢,我们这边也可以把这个userr放进去啊,把这个UR放进,因为它有相应的信息嘛,我们也把它放进user ID啊,你本身用用户的信息等等,我们可以放进去。好,大致呢,就这样子的啊,大致就这样子的,好,我们来看看我以前是不是这样设计的。好,我看看这样设计的啊,Message user看count一个message user,然后这个MS呢,也有一个user,这两个都是user啊,这两个user还有稍微有点区别是不是啊,这两个U点看看message一样的啊,这两个是一样的,都是user点啊,就说这个U点,这个user点,这个点只是他们那个有微小差别,就是你的信息这块呢,还包含一个内容,而你current地方包含着什么呢?是连接啊,是一个连接,把这块呢做一个区分,到前发送消息的时候呢,我要新建一个专门用于发送消息的一个处理器。
07:04
就是SM process,用它来管理对信息的发送,发送完了过后呢,服务器那一块要去正常的接收。啊,服务器要去正常接收,好,那现在呢,我们就来开始做这个,做这个工作了啊做这个工作了,好,分析的思路已经有了,第一个建个这个,还要建这个,那么我们还行,在这个地方还要去编写SM这个cover,由他来进行这个群发。啊,进行群发,好,我的思路就这样子的啊,就这样子的。好,那么现在我们来把这个思路捋一捋,我们来写一写啊。好,我把这个地方往下挪一挪。我们把这个思路捋清楚一下,发送消息。好,我们来简单的捋一下,这个发送消息的消息就是。呃,客户端完成完成客户端可以可以发送。
08:01
发送消息的这个思路第一步,第一步先增加一个消息结构体,新增。新增一个消息结构体,这个消息结构体呢,我们比如就叫SI message。啊,这里面呢,就是我们消息第二个呢,我们还应该新增加一个current user,因为这个当前这个用户呢,里面可以维护我们重要的一个连接,没有连接你什么事干不了,对吧?所这里面还有一个要新增。新增一个,新增一个model,这个model呢,呃,我们就叫做current。Current user。这个地方你肯定会去这么考虑,第三个,第三个你有了这个东西过后呢,你还得在我们的这个SM process里面增加一个群发消息的一个动作,比如叫善善的这个,呃,比如说散的这个。
09:03
呃,Message啊,这还要新加,新增方法在哪里呢?在这个SM SM process。这里面增加相应的方法,对增加相应的方法,增加相应。啊,相应的方法。相应的方法。比如说我们叫做散。啊啊,Send message。Mes,但为了以示区别呢,代表你这个消息是群发过去的。这个消息是群发而不是点对点的呢,你可以再写个group,为什么呢?因为你将来肯定要去增加一个点对点聊的,你可逻辑上是有区别的。点对点聊和群发可能有些区别,你的包可能都不一样。对吧,因为你将来这个SM这个包里面呢,你可能新购新建一个,另外一种就是群发,这个是群发消息,你可能还有点对点的消息呢,也有可能。
10:03
好,所以说我给他取个名叫sandro,这个代表什么呢?发一个发送一个群聊的消息。好了,那基本的思路我们就分析到这里,那现在呢,我们就准备来写这个代码,好,我们再去写这个代码,好分析我们先说到这儿。
我来说两句