00:00
Let通过web编程实现服务器和客户端的长连接。我们来看这样一个案例。我们知道HTP协议呢,它是无状态的,所说服务器和客户端的请求响应一次对不对,下次呢,会重新创建连接。现在呢,我们要做这样一个,做这样一个工作,就是我们要实现基于web so的层连接的全双工交互。实现什么功能呢?我们要在这里改变HP协议多次请求的约束,实现长链接,服务器可以发送消息给浏览器,就是我,我这边有一个服务器。这边有一个浏览器,比如说这边是浏览器,咱们的。对,这是一个浏览器,那浏览器跟服务器之间呢,我们保持一个长连接,就是用这个web socket呢形成一个长连接。
01:00
形成长链接过后呢,浏览器,如果浏览器可以发个消息给我们的服务器,服务器这边呢,可以把这个消息再回显回来,那服务器可以把消息收到过再发给浏览器进行回显。还有一点就是客户端,就是我们所说的浏览器跟服务器端,它会相互感知,比如说服务器这边关闭了。服务器这边关闭了,那么我们浏览器呢,就是我们这边的浏览器会感知到,同样如果我们这个浏览器关闭了,我们服务器这边呢,也会感知到,就是基于这样一个功能,使用web。来实现。好,现在呢,我们来看一下如何用web实现服务器和客户端层链接,这个在我们实际开发中呢,还是非常有用的,来看一下打开我们的idea。对,现在呢,我们还是在net下面新建一个包。新建一个包,Web。
02:02
Soy。我们说一下完成的思路,完成思路是这样子的,我们先写服务器。谢谢,服务器这边,服务器这边写完了过后,我们再写客户端,好吧,大致是这样一个流程,好现在呢,我们开始编写。打开这里,我们先写。一个类这边呢,我们先建一个叫做my server。取个名字叫my server。好,总方法前面的代码,同学们跟我们在。这块写的基本上是一样的。基本上是一样的,所以说呢,我把这个代码就先拿过来用一下。只是里面有些变化的地方呢,注意听老师给大家说。我们看是从哪开始粘贴复制过来。从这。从这里复制过来,有些不要的东西,我会把它拿掉。拷贝。
03:01
然后这边呢,因为有异常抛出,我们也抛出一个异常。没问题吧,好,把代码复制过来。复制过来哪些地方需要改变呢?显然,因为这块我不是在做的,不是在去做心跳测试。那现在呢,我把这段代码先拿掉。对,这段代码我们就拿掉了。OK,前面代码是一样,我就不去改变它。不去改变它这边boss group worker group,包括我们这个China的实现时间内是link server soft channel这个日志。日志的这个handle我们压进去,下面呢,我们就来开始处理好。这里呢,我们先加一个什么,各位,因为注意听我们要写很多注释哈,因为是基于。我们基于HTP协议的,是这样子吧,基于这个协议,所以说我们要使用HTTP的编解码器,使用什么呢?因此我们要使用。
04:04
就是HTTP的编码,编码和解码器。解码器。好的。这块我们怎么做呢?pipeline.add last。又一个HTTP口。HTTP。Server。加进去下面呢,还有一个就是我们整个,呃,在数据处理的时候,就是我们客户端。就回到这我们客户端和服务器端。有这再画一个简单服务器吧。好,这是我们客户端,假设这是我们的服务器端,这是我们的server。我们客户端是浏览器,对不对,浏览器待会儿呢,我们可以发消息过去。呃,然后呢,整个这个过程我们是以什么呢?因为是基于HTP协议的,所以说他是干什么呢?是以,在这个过程中是以。
05:01
我们是一块。块方式干什么呀,写的。所以说我们要添加另外一个处理器叫做什么呢?添加一个track。别写错了,穿。NK的什么呢?Writer?处理器。诶,处理器把这个加进去。那这同样拍online.last。又一个T。Writer handler。Andd。这是添加这么一个处理器,紧接着还要加什么处理器呢?好,下面呢,还有一个特别重要的东西,还要加这个东西,就是说一下,嗯,加这个,我先把它加进去再做解释,大不着急,At last,我new一个http object。A aggregator,这是什么呢?好,我先指定一个大小,比如说我这个8192。
06:03
啊,当然你可以根据你实际情况来指哈8192。我在这里做一个注释说明。特别提醒大家,第一点呢,就是我们HTP协议,呃,HTP数据呢,其实它在传输过过程中,它是分段的,是不是就是因为。HTTP的数据。在什么呢?在传输。过程中。过程中是分段的。是不是这样子的,所以说我们这个HTP它是干干些什么劲呢,就是这个东西htp object greater。他是干什么的呢,这个。就是。就是它是可以这样功能就是。可以将将多个多个段干什么呀,聚合起来哦,要聚合起来。聚合。
07:00
起来,这就是为什么,同学们,你们有没有发现,有时候你会发现当我们客户端或者浏览器发送数据量很大的时候,会出现多次HD请求,大家有在开发的时候应该有遇到这种情况,所以说这就是为什么。这就是为什么?为什么当当浏览器,当浏览器发送大量数据时,发送。大量。数据。它发送大量数据时就会干什么呢?就会发出多次。就会发出多次。HTTP请求的原因?因为它是实际上我们这个HP数据,数据量很大的时候,它本身会分段,那如果在数据量很大的情况下呢,你必须要用一个处理器把这个多段聚合起来。继续说说这边加这个处理器的原因,就是这个原因,那下面呢,有了这个东西之后,我们继续往下面处理,还有什么东西呢,同学们。
08:06
我们再加一个东西。pipeline.add last再加一个处理器,又一个web,大家看。就是web socked so web socked什么呢?Server。这个东西,We server protocol handler。好,这个地方这个是干什么的,我要给大家说一下哈,也要做一个说明,不然的话,同学们待会就听不懂老师在说什么了,第一点,第一点我说一下。就是对于web socket呢,它的数据其实是以真的形式来传递的,所以说我现在对于我们这个web socket。它是干什么呢?它的数据。它的数据是以这个真。同学们,听过这个东西吧,真就是这个free free还是free,就这个东西以这个针的形式传递的。
09:07
形式。传递。OK,所以这一点大家用的,所以说大家看到,因为它是以帧的形式传递,所以说我要做一个处理器去处理,然后呢,可以我们可以看一下。可以看一下。可以看看到。看到哪里呢?就是我们的有一个叫做web socked socked frame。下面有下面。下面有什么呢?有六个子类。我们来先看一下同学们web socket frame so。好,这样就找到了。大家看在web socket free里面呢,我们找到它的继承关系。从这边可以看到它下边呢。往下看吧。这看也一样的啊,不知道为什么这调不出来了,往下看,大家看这有个battery web socket bring,还有一个什么呢,还有一个这个tax web shock web text web shock这个呢,我们后面会用到,会用到它是基于文本的这种一种证。
10:14
那待会儿呢,我们会对他进行一个处理,所以说。最后接着往下看。第三一个。呃。我们这里面呢,待会在发送的时候,这个形式它是这样子的,浏览器发送啊,发送链接的时候,或者是请求时,请求时它的形式大概是这样,我先写到这WS。然后一个斜杠写上local host的端口号,比如这个端口号我们还是7000。然后这边呢,我有一个hello,这边大家可以看到。我们在请在浏览器发出一个请求的时候,他用的协议是web shocking这种协议就WS开头的,然后呢,这边会有一个hello,这这个地方啊,不一定是哈,我写个叉叉叉表示什么呢。
11:04
这个表示就是你这个地方请求的,请求的一个。呃,Uri就是表示。表示请求的一个UI。OK,就是你请求什么样资源,所以说我在这里呢,需要用一个web so server port handler来处理,就是说大家看他web so server portoc handle呢,他会跟你这个地方请求的进行一个对应,比如说我们待会写的是hello,那这边呢,我们也要写个hello。好,这是第三点,第四一点我还要说一下。我们这个web sock server port handleer呢,它还有一个重要的功能。他要干什么呢?诶,他会把我们的HTTP协议。啊,就是说它的核心功能是将一个HTP协议升级为WS协议。
12:01
及常链接它的核心功能。核心功能注意听是干什么呢?将我们的HTTP协议。该怎么样升级为?升级为WS级。及我们的web协议。即常连接。保持常连接。保持。常链接。好。也就是说我为什么我们这加一个web so server port handle,第一个原因,因为整个这个过程中呢,它是以帧的形式来传递的,好,下面有很多这个指类,待会我们还要写一个关于这对于对这个帧还呃的一个处理的自定义的handler。这个web web server,呃,Pro handle呢,它有两个作用,第一个呢,它能够去识别你请求的这个资源。这个资源一定要在对应,就说你这写的哈,那你将来在浏览器请求的时候,这个地址呢,也是hello,这样才能匹配,第二个呢,它能够把HP协议升级为WS协议,才能保持一个长链接,好这是这个下边呢。
13:10
我们还要写一个就是自定义的,自定义的一个handler。那么这个handler呢,就是专门去处理,就是浏览器请求的。同时我们也会回应干什么处理业务。业务逻辑。处理业务逻辑好,那我这边先写一个拍,来点last,因为现在还没写,所以说我先把它制空没问题吧,就说还没写的情况下,我先把它制空。那待会呢,我们就要开始去写这个自己自己的这个处理业务的handle,好,这是我们这一部分内容,呃,那这块呢,我们就写了一个最基本的一个,呃,一段代码,就是把这个server这块写完了,下面呢,我们就来编写他的什么呀,他的这个handler就是我们自己写的这个handler来。
14:07
老师接着继续编写。
我来说两句