00:01
各位上硅谷的朋友们大家好,下面呢,我们继续来开发多人聊天室这个综盘力,咱们继续写这个服务端代码,刚才呢,我们做到了这个步骤,就是我们把客户端的消息我们得到了,得到之后最后是不是要广播给其他客户端呀,所以下面咱们把这个代码我们来实现一下。那在里边呢,我就来调个方法,咱给方法起个名字,比如我叫这个cast。因为是其他客户端嘛,那我们来上这么一个啊。叫做client啊,就是广播给其他的客户端,然后在里边传入咱的参数,那这参数需要什么呢?各位可以考虑一下,第一个你要把消息是不是给其他客户端呀,所以这消息是不是肯定需要,然后第二个就是其他客户端,而其他的客户端就是其他那些,那咱是不是在这个select里边,这个我们肯定需要。
01:01
然后第三个咱们当前这个通道是不是也需要就是socket channel,因为咱们广播是不需要给自己再广播一次,只需要给其他客户端进行广播,所以这是我们写的里边的这个过程,那下面呢,咱把这个方法我们做个创建。我就写到这位置。就是广播给其他的客户端。然后这个写完之后,在里边我们写一下这个代码,这个代码就比较简单了,我快速写下步骤啊,首先第一步大家说我们应该干什么。我们应该做什么事情呢?我们写一下啊,首先是不是先要获取到,就是所有注意啊,是所有已经接入的那个客户端,把这个是不是先得到,就是比如说你现在啊,哪个客户端我们已经接入进来了,那把它得到,然后得到之后我们的第二个操作。
02:00
咱是不是要循环向这个所有的拆里边。是不是要给他广播我们这个消息,所以现在做的应该就是这过程,但是过程中各位注意啊,咱们不需要再向自己广播,只需要向别的客户端China进行广播就可以了,所以这是我们要完成的一个基本步骤。给各位做了一个说明,然后下面我们根据步骤,咱们把代码我们来实现一下,写下这个过程啊,首先第一步先获取所有已经接住这个channel。那这个怎么做呢?因为咱们有这个在里边有个方法叫就得到里边的所有这个。而这key呢,是一个set集合,我们叫这个就是里边的我给它起个名字啊,咱就这个key set,它是一个set集合,那下面呢,咱们就是把这个set集合是不是要遍历啊,遍历之后得到里边的每个channel,然后进行广播是不是就可以了,那下面我们来遍历一下啊。
03:08
这个便利多种写法,我这里边,比如说我就来一个这么一个增强负循环方式。咱们给他遍历一下啊。那我来写一下,首先啊,我们这个名字应该叫这个selection,这个P。这个啊,然后咱们叫select key。加上我们这个section。做一个便利,便利之后这个section k,就是里边的每个这个section k,然后从里边咱们来获取一下里面的一些通道。写下啊,获取里边的每个。那咱们得到啊,Selection。点上这个,那咱们把它进行得到,这是我们写的里边的这个步骤啊。得到之后呢,我们把结构咱们稍微改一下啊,我就改成这个channel,然后这里边起个名字,比如叫这个就是,呃,因为它是目标的,就是我们要给哪个通道及广播,所以咱叫这个target,这个拆我就叫TR拆啊。
04:17
这是我们写到的啊,然后写到之后呢,下面咱就做这个广播就可以,就是给他直接write这个数据就可以了,但是过程中呢,我们需要做个处理,就是我们现在啊发送这个消息,咱们不需要给他自己进行这么一个发送,就是需要把自己给他就是剔除掉,因为不需要给自己进行发送。然后这个怎么做呢,我在里边做一个判断,我们来写一下啊,大家注意。刚才咱们把我们自己是不是已经传过来了,就是这个socket channel,所以咱给他做个判断是不是就可以了,那我在里边写一下啊,首先写的完整点,因为咱这个tr channel。
05:00
首先呢,它必须是一个这个socket channel是不是才可以啊,那我们做一个类型的这么一个判断。首先第一个比如说这个,并且这个就是TR。它不应该等于啊,写下啊,就是不等于我们这个就是so channel跟他应该不一样,就是不是当前这个channel,那这个时候咱们才进行广播,所以这是我写一个判断,第一个他要是搜给channel,第二个不是咱们自己这个channel,所以这里边我们才进这个广播,那广播怎么做呢?其实咱就是啊,把消息直接给它write进去就可以了,就是把消息发送到这个target channel中就可以了,那我来写一下啊,我们用里面这个方法。就是这个TR。点上一个right方法啊,那TR的我给它做这么一个就是呃强转向啊,给它直接就强转成咱们这个so channel。啊,给它强转一下,然后强转之后我们调用里边这个就是right方法。
06:06
我们来调一下啊,然后write方法中还是用这个插点。加上一个编码方式UTF杠八。然后咱们再点上这么一个以后的,加上咱们那个传回来的消息,咱的消息就是这个message。把这个给它加回来,所以咱们现在呢,就把这个过程我们就完成了。然后完成之后呢,这里边有异常,咱们把它处理一下啊,直接给它叫。Rose出去了啊,所以现在咱们就把这个广播到其他客户端的代码,我们就最终完成了,也就是说到这里为止呢,咱就把这个多人聊天室这个服务端的代码我们就最终写完了,所以各位按照我这过程能把代码给它写出来,我写的过程就是先把里边实现什么步骤给各位先分析出来,然后按照步骤咱们再一步一步并写代码,所以现在服务端的过程我们就完成了,完成之后呢,最后因为咱要有一个程序的入口,所以咱们最后来到咱这个问方法里边,在问方法中是不是要写一个程序的入口,那我来写一下啊,这些入口就是调咱刚才那个方法就可以了,那我直接调一下。
07:25
上这个就是chat。点上这个start server,这样的话呢,我们最终就能完成这个服务端的这么一个启动啊,由异常我就直接来一个拆开始捕获一下啊,所以现在咱们就完成这个服务端代码的编写。啊,这我写一下,就是我们那个启动的主方法,那这个完成之后,咱们马上来编写客户端代码,现在是服务端最终的这么一个事件。
我来说两句