00:00
现在呢,我们呢,要做一个这样的事啊,咱们呢来到我们的movie,这个是我们的movie这个页面是不是我呢可以在网页上是不是访问他啊,咱们的网页的地址呢,是当前这个地址。CTRLCCTRV下面的是不是好,呃,前面这个我把它停一下好了,待会再再整。把这个给停掉,全部停掉吧。找到这个东西呢,把它给停掉。啊,待会再整啊,然后呢,我们看一下我们的这个页面啊。好,现在呢,是不是来到我们页面上,当我们点击的时候呢,是不是可以去到时候可以播放我们的视频啊好,那么咱们要去整这个弹幕的话呢,我们这里还做个电视啊,因为咱们这个版本呢,我看了一下它呢不是最新的,我们可以放到get up上看一下。咱们这个引入的这个库啊,不是最新的一个版本,然后最新的一个版本呢,它对弹幕实现的可能更加好一些,我们就用最新的一个版本啊,我们看一下最新的一个版本呢,那是叫做1.24,是不是最新的版本是1.24,咱们现在引入的版本呢,是一点。
01:15
二二是不是,哎,它呢版本不一样,那版本不一样呢,在弹幕这一块呢,它有一些变动,有些变动,那我看了一下,对比了一下啊,因为之前呢,我们用过1.2的,后面也用1.24的,而且1.24的这一块呢,比1.2更好一些,那咱们来看一下啊,咱们就用1.24的来看一下,那么1.24怎么去引入呢?来看它呢,这里块呢,有一个看看下面有没有写啊,有写的话就直接用。嗯,下面来看这里没有写,没有写的话来到中文文档啊,这里有个中文文档,是不是打开它,打开中文文档的话往下翻啊,翻到下面去,下面有个CD。可以看下这边有没有啊CDN是不是这里有CDN啊啊其中第二个呢,就会有一些在线的一些网址,那网址呢,就是最新的一个版本,1.24的版本是不是,那我们就引用这个1.24的版本啊,取代掉我们之前的1.2版本。
02:12
取掉它,咱们ES是不是下面这个呢,也是如此啊,引如这个GS啊,注意啊,你不要用这个map文件啊,这个map呢,是用来帮助去识别这个CS错误的,这个map呢是帮助识别这个JS错误的,那你不要把这个map文件引入的map呢,只是我们开发的时候使用的生产环境是压根用不着的啊,所以说我们引入的是一个JS文件,这JS文件呢,来到这里把最后一个给替换掉。好,替换掉的版本是不是好版本替换掉了,我们先访问一下页面啊,看一下会不会出问题。好,呃,这里面呢,他说我这个连接出了问题,是不是看一下我的work是不是出问题了,没有出问题,那么再回头看一下啊,再看一下我这个版本是不是写好了啊,也没问题啊,那我们把它全部。
03:14
好,他这里呢,访问不到,是不是,他说呢,这个连接呢成功了,但是呢。他能失败的去做你这件事啊,说白了就是onro可能出了点问题,我把work什么取消了。好,当前这个地址的话呢,是这个地址是不是CTRLC,我看一下服务器有没有开。服务器也重启,重新运行一下啊好,服务器先开起来,开起来之后呢,我们再来一次啊,再访问一下这个页面,当前的这个地址的话呢,就是。好,正在加载中。嗯,来了是不是没有问题,他们也能做播放视频是不是没有问题啊好,跟我们之前的会有一些不一样,我们来看一下会有哪些不一样呢?好,咱们现在是不是要去实现弹幕功能啊,好,那这里面呢,就涉及到两个这样的规则,首先第一个就是当我用户点。
04:17
加载要播放这个视频的时候,诶我对应的是不是要去加载我的弹幕啊,是不是,诶这呢就是第一个我要去加载我弹幕,其次等弹幕加载完成,我是不是在这里可以去点击发送啊,诶这里面啊它弹幕正在加载中,是不是不让你发送啊,好等你加载完成之后,诶这是不是加载完了啊,这是它的一个测试的一个库啊,测试库加载完成之后呢,你应该来看我先把它点出去啊。嗯,这里面好像出了点小小的问题,刷新一下页面,重新加载一下啊。下这里面应该能让我发,但是现在发不了,是不是咱们呢,是不是也要去能够发送弹幕啊,是不是好他这里呢,估计是卡了一下。
05:04
那估计是卡了。咱们换一个。先先正常播放一下,呃,这里好像不太好使啊。我看一下这里呢,它是其实能点的啊,这里好像出了点小小的问题,然后呢,没办法点击这个按钮是不是啊,我们先加载刷新一下吧。来看一下,呃,他不让我点啊,现在。呃,这里面不好调试的话,那我们换一个吧,我们来到我们的。开发的工具在这里面调试一下。啊,这两情移动呢,肯定是能点的,它这里呢,可能出了点小小的问题,我们拿到这个开发者工具上去看一下。这两个地方呢,都能够调试啊,我们来在这里调试一下点。
06:00
好。那加载完成。诶看一下页面是不是没有问题啊好,加载完成之后,在这里是不是还去发送弹幕啊,是不是好我们在这里测试一下啊,123456,比方说呢,来看我这里呢,就涉及到两个规则,一个是呢我弹幕的。我加载这个视频的时候,是不是要帮我加载弹幕啊,好,我们呢,待会就要知道他到时候怎么会去做些什么事,另外呢,就是我发送发送这个弹幕的时候,是不是他也会做些事情,那我们就要去知道这两件事情,他到底做什么事啊,首先呢,我们看一下弹幕。时他做了什么事,他呢,实际上呢,打开那通报会发现呢,往下走啊,他呢实际上发送了个请求。诶,这个请求呢,就是它加载弹幕的时候做的一些事情,请求地址在这里,是不是请求地址,然后请求方式是一个get请求是不是好,我们看一下啊,请求地址跟请求方式我们找到了。
07:01
来到我们的movie,我们来在下面写个注释啊,这里面呢,我们要知道就是当我们去加载弹幕的时候,他做了些什么事。和发送弹幕的时候,他做了些什么事啊?啊,加载弹幕呢,他发送了个请求,请求地址为我给他复制这个请求方式呢是。Get请求是不是好,那我们呢,就来对比一下啊,这个请求地址它究竟是怎么产生的?来看我呢,在这里面初次加载的时候,是不是在这里输入一个API地址啊,诶你会发现这个API地址呢,来跟这个是不是一样的一样的,再往下对你觉得这两个之间有什么区别。他在后面加了个东西,你看是不是加个V3啊,加了个V3说明呢,他访问的是当前路径下的这个路径是不是单V3,然后呢,后面是不是加了一个查询字符串啊,诶这个串呢,就是来看是不是就是我这里设置的这个。
08:11
ID值为DEMO,它是不是发发送一个ID值为DEMO过去啊,哎,就说呢,这个东西是不是它自动会发送呢?好,当我们呢,也就知道,当我去加载弹幕的时候呢,它会默认访问当前这个地址是不是啊,但是呢,咱们肯定不能访问这个地址,这个是别人的服务器,是不是我们要把它改成我们自己的服务器,那么我们就要将这个地址改一改,是不是改为我们。On work的这个地址啊,所以说呢,诶我把它终止掉了啊,我还得待会再重新开启一下,我呢,是不是待会呢,在这里要改成这个地址是不是好,改成这个地址,它是不是默认还会加上个V3啊,诶也就是说呢,它是访问当前这个服务器上面的V3这个路由地址是不是,那我们是不是待会要在服务器上建一个V3这个路由,才能够接收到他这个请求啊,接收到请求好,请求方式呢,是不是get,那咱们就要设置一个get路由啊get路由好这个不小心没有关了,我还得重新开一下。
09:17
啊,待会这个地址呢,还得换一下。好,这个地址要换一下啊,都换一下吧,好这个地址也有了,接下来呢,我们还要看一个东西,就是看什么呢。看它的返回值,我要看一下最终我要加载的弹幕返回的内容到底是什么,是不是,哎,我才知道呢,我到时候要写个服务器,我返回给他,到底返回什么东西。好看访问内容呢,它这里有个测试API,我们呢来看一下啊。他呢,其实在这里发送过一个测试API,这个是不是它测试的一个API啊,我们看一下啊,这测试API它会发送什么内容。
10:00
也就说待会这个东西返回值是怎样的,我对应的就要返回什么值给它,是不是,哎,我们发现呢,它它东西非常庞大,因为这个测试呢,非常非常多,是不是它呢比较多,所以说它没有格式化啊,那么这里面我们发现它的整个格式是怎样的呢?首先返回值是一个。这啊,Dress字符串应该是,是不是这个dress字符串,然后呢,里面有两个字段,一个是cold是不是,哎,这个cold是干嘛用的呢?Cold为零。诶,它呢,就是我们前面讲过的一些东西啊,咱们还记得咱们写那个三级联动的时候呢,我们写服务器的时候,我们服务器返给返回给前一段页面的数据的时候,诶我们加了个词段叫做我们是不是叫做statuss啊,还记得吗?Statuss为OK,是不是为status的,为OK的时候才代表我的数据是请求成功的啊,那可能业界认为OK呢,是两个字符太长了,他们呢通常用零跟一表示零呢,OK1呢,可可以,可能是不OK,或者是其他错误,是不是就用这种方式去表示啊,比如这种东西呢,也是代表我那个status为OK那种意思啊status OK的意思,那么这个后面是不是data塔,然后看下塔的数据是怎样的,首先塔的值它是一个。
11:27
数组是不是,然后数组里面的放置。一个一个的数组,那这里面是不是一个二维数组啊,二维数组里面是不是有四这样五个参数,那我们研究一下到底是什么啊,来返回值呢,是一个。字符串啊。回值是个字符串是不是?然后呢,再往下走,它的返回值具体内容呢,我们写一写,第一个呢为code为零是不是,第一个为零,零是一个number是不是,如果字符串是不是加个引号啊,零是number啊好,接下来呢,下面一个还有一个贝塔,它的值为一个数组,数组里面呢,会有多个数组是不是?那咱们就写两个意思一下,然后每一个数组里面是不是有五个参数啊,我们看一下有哪五个参数啊,把这五个参数我们。
12:18
找到第一个吧。CTRLC,然后呢CTRLB,看一下是哪五个参数啊。我们来研究一下这五个参数有什么意义,这里面呢,有个第一个值呢,它是什么呢?弹幕的发送时间,也就是说这个弹幕呢,在某在我这个电影播放的某个时间上,比如说是三秒钟,是不是它这个意思是三秒啊,单位是秒。也就说三秒钟的时候呢,应该显示这条弹幕,是不是三秒钟的时候显示这个弹幕,然后这个零呢,是弹幕的类型啊,弹幕的类型,那这些呢,因为它这个库呢,自动它是能够和哔哩哔哩这些东西兼容的,然后呢,这里面呢,就代表着什么高级弹幕啊,什么普通弹幕等等啊,就是弹幕的类型,然后这个呢,它代表的其实是弹幕的颜色啊,但是呢,这里面都是这个幺六厂啥啊,它这里其实代表的是弹幕的颜色,这里呢没有体现出来,我们待会呢,可以改变这个东西啊,弹幕的颜色,弹幕的颜色,然后下面这个呢,是弹幕的什么呢。
13:34
是发送者啊,咱们的弹幕可能111个视频里面是不是有可可能有很多个用户发送一些弹幕信息,那这里呢,就记录着到底是谁发送的弹幕,弹幕发送着,那一一呢,是弹幕的啊内容具体内容了,也就是说这里面呢,至少要包含这五条信息,是不是啊这五条信息好了,那么以下这些东西是不是都是类似的,都是类似的好,就是我们加载弹幕的时候呢,到时候要返回给咱们这个。
14:04
他的这个请求的返回值,是不是待会儿我们要建一个这样的东西给他,必须要返回一个这样东西给他,好再看一下发送弹幕的时候,我要走什么逻辑啊,发送弹幕呢,我在这里发送过一次。来在下面呢,我们看一下,其实就是最下面一个是发送弹幕的,它呢请求是一个。嗯,看一下啊,看一下这个I handles请求呢,是一个POS,我请求地址呢,其实没有变化,还是这个地址你会发现呢,是跟之前的是一模一样的啊。你的地址呢,一一一一点都没变,其实呢,就是将这个我先要替换掉它这个。请求地址没有变是不是,但是呢,请求方式变了,变成了POS请求,是不是POS请求啊,请求方式变了,好再看一下我这请求携带过来的玻璃参数到底是什么啊,请求体参数有些哪些东西来看一下往下走啊,这里面好像看不出来啊,我们再发送一个看看。
15:11
点一下啊,再点一下这个看下会不会,诶下面是不是有请求参数啊,诶这个呢,就是我发送的请求参数来,呃,诶它这个怎么太小了,我把它缩一缩。哎,这个哪去了。好,我们来在页面上看一下吧,在页面上这里不好调试,我们在页面上看一下,刷新一下页面啊,这个地址呢,要改成我们单起这个地址回收。好,我们呢,在这里的时间能不能发送弹幕呢?好,页面上是不是点不了啊啊点不中啊,这个页面可能在咱们的这一块呢,可能不好测试看下能不能发送。先播放一下,然后呢,按下回车啊,发送不了。
16:00
发送不了啊,那么咱们就没办法去测试这个东西啊,而且呢,会发现呢,这里面呢,它默认的会给你加上一个max,是不是在这里面发送的时候会默认加个max这个呢,就是它要接收最大的这个弹幕的数量就是3000啊好,那咱们在这测试不了,还是只能打开我们的这个微信开发者工具。好,再来测试一次。来,我们发送一下弹幕,谢谢。呃,一回撤好来在下面呢,他肯定会接收到我这个刚刚发送的请求啊,那么这个这个诶,他不能让我点,是不是一点就没用啊,所以说还得重新打开。好这一块呢,他就不让我发是不是啊,好这个我就不想看了,不就没用了,那我还是要打开重新打开呢,然后再去调试这个东西啊,诶这个关掉再来一次。
17:09
呃,咱们呢,比方说群众公众号。哎,他呢,好像现在隐藏掉了。打不开是不是,呃,隐藏掉了,我先把它关掉,再再看一下选择一些小程序,能不能把它打开,小程序打开了是不是,那我呢,不需要小程序,那再回退去来一些公众号。嗯,好像现在这个见面被他。成功的。隐藏掉了,是不是我真的点不中啊,他不让我选。呃,这个界面呢,也出不来是不是,嗯,我把它拉拉取出来呢,也拉不出来啊。呼出的时候呢,也呼不出来,然后呢,切换账号的话呢,看切换账号行不行啊好呃,这个页面的话呢。
18:07
他那程序设计的有点问题呀。是不是打不开呀。你看我选择公众号项目,然后呢,他没有反应啊,没有反应。然后关掉它的话呢,界面呢又没有显示啊啊,这让人很无语,这样我呢,虽然我谷歌调试不了,但我就用five force,我试一下可以吧,Fire force的话呢,应该跟谷歌的表现方式呢是不一样的啊好,来看一下fire for。我们同样的是审查一下啊。右键检查元素调为移动端,诶在呢,应该是这条啊,那我让它停到侧边,好,我来在这里看一下能不能发,诶five fourth能发是不是很好啊,来123456,我点它加载还没加载呢啊,然后看一下,看一下我们的这个网络这一块啊,网络这里发送了两个POS请求,看到没有,我选中一个看一下它里面的一些参数啊呃,参数。
19:15
他呢,这里面怎么拉上去。好参数,诶,这是不是我发送参数啊,想办法把它复制一下啊,就是我要发送参数啊,当我发送POS请求的时候,这是不是就是我要携带的请求参数,那我们来看一下啊,请求参数呢,一共有这么几个字段啊,我们看一下一共有哪些,首先这个also作者它是我弹幕的。是不是发送者,下面这个是不是我的颜色,两张都写的很清楚很清楚了啊,大的。颜色下面这个是弹幕的ID是不是?哎,待会呢,我就根据这个ID值拿去对应的存储它,我呢可能有一个A电影,那么我是不是要存在A电影ID中啊,那我可能有个B电影,那我这条弹幕信息就要存在我B电影中,我不可能A电影跟B电影的弹幕是不是串通了,那这样就乱了,所以说不能串,所以说就要通过这个ID值来对应的保存,那下面的test呢,是弹幕的。
20:15
内容是不是老time的,是弹幕的?时间是不是发送时间。下面这time就是弹幕的类型了,是不是啊,就是类型了,好,那这个呢就比较好一点,那咱们呢,就分析出来这两个啊,他呢请求弹幕的时候,加载弹幕的时候呢,会发送一个get请求,我呢需要返回一个这样东西给他,是不是好,当他去发送弹幕的时候呢,他会发发下当前地址呢,发送一个POS请求,那么我呢就要想办法接收处理好这些参数,然后保存在数据库中才行,是不是要保存在数据库中,那么咱们来看一下怎么去做啊,那要做这个事的话呢,我就得先在我的路由中呢,是不是搭建这两个路由啊,是不是这两个路由这里都搭建了啊。
21:07
好,那比方说咱们写在这里。一个是我到时候要加载弹幕的路由,是不是加载弹幕的路由,一个是我要设置的是接收用户发送弹幕的内容。接收用户弹的路由是不是两个好?第一个呢,是一个root点,是不是get好?这个路径设置为多少?是不是就是V3啊,就是V3啊好,然后呢,这里面呢,写IQ is好到这这个V3能不能懂,因为我前面是不是就是因为这个地址,它访问的就是V3啊,它默认访问的V3,所以说呢,我们必须设置V3啊,这块大家清楚,然下面呢,是不是接收弹幕的路由啊,他呢是不是它呢不是get子解啊,它是POS集是不是好,咱们呢,比方说我们先做第二个啊,先做第二个,先在去接收一下用户发送的东西,我们再去做一些处理好要接收它发送的请求,我们是不是要想办法接收他的请求参数啊,是不是好,这里面呢,我们可以看一下,嗯,他发出来的请求头是个什么样子啊。
22:26
他发送过来的呢,是一个POS请求,然后呢是一个专数据,那在这里我看下有没有体现到我们想要看的一个点啊。他这呢,可能没有体现到,就是请求头啊,请求头在这里是不是啊,看看有没有体现到。啊,它这里好像没有体现到啊,那我们看一下这个参数,我们可以试一下啊,咱们是不是要接受它的参数啊,我们看一下正常情况下我要接受po子请求,我怎么去接受它的参数。我是不是用一个第三方中间键去解析啊,叫做body pass是不是好,那大家去试一下啊,看下行不行。
23:08
引入body是不是引入,那么我们就是一个。我的等于require。这个酷我要下载吗?需不需要。不需要,因为他是随着我的。Express框架是不是就下载下来了,所以说我express框架就下载下来了啊,这些框架都放在上面啊好,那么我使用它的话呢,我这里面只有一个POS请求,所以说我可以把它放到中间,这个中间键的方式是不是使用啊,放在这里使用啊,它呢是叫做调用一个ul。呃,Inco的一个方法,是不是这样的方法啊,Urlcoed,然后呢,在这里面呢,传一个对象,这对象叫做。
24:00
E extended。喂,什么?为处是不是extend为处啊,那这里发一个这样的中介是不是,然后在这里面呢,我是不是能通过那个。IQ点玻璃拿到我想的值啊,拿到想要的值那么好,那这里面呢,我们就结构负值啊。嗯,这样我呢,先不用结构复制,我先打一下这个body,看一下它有没有内容,如果有说明我这个东西是没有问题的,如果没有的话呢,是不是就有问题,好,那我们看一下行不行啊,那要看这个值的话呢,我就得将这个movies里面的所有的内容呢,改成我当前这个地址是不是,而且呢,大家注意,这个斜杠呢,你一定要带上,它只会把你加上V3杠后面的部分斜杠呢,你必须要带上才行啊,把这两个都改了。这个呢也改了好,是不是改了,改了之后呢,我们再来看啊,再来刷新一下咱们的页面刷新。
25:05
然后刷新之后呢,再来去处理它,来点击发送一条弹幕信息啊。点击是不是发送了,好,看一下服务器这里打印的结果。嗯,这里面说什么呢。说解析插这个方法出了问题,是不是他说解析这个方法出了问题,也就是说我这弹幕这个结果我放错了地方啊,这个路由放错了地方吗。呃,我在这里是不是接收到了这个应该是POS请求啊,我们看一下这里面呢。这里面肯定出了问题啊,因为呢,我这个请求方式呢,它待会发送的请求看一下是不是对的,这边发送那个POS请求,请求地址的话呢,也是我这个单前这个地址是不是再看一下work那过能也没问题,它访问的就是我这个V3发送的POS请求是不是,诶那么呢,咱们在这里面呢,咱们在这个路由中呢,应该要去接收到这个咱们这个地址啊root.pos_V3-V3是不是好,现在呢,目前是在这里,是不是没接收到啊,没有接收到啊,咱们是不是服务器没重启。
26:22
好,再来一次啊,咱们服务器重启之后呢,再来一次,再发送一次,点击发送之后呢,在这里看一下,它现在返回置是什么呢。扣的对象说明他接收到的返回值吗?没有没有接收到请求参数是不是啊,所以说呢,在这里呢,告诉大家,它发送过来的数据呢,并不是一个普通的一个请求体中的数据,其实呢,也可以理解为我们那个一个。他的数据。啊,这个弹幕信息呢,是以。牛是数据发送过来的。
27:01
所以说呢,你在这里呢,你没办法直接通过这个东西拿过来,它呢一开始呢,返回不到你想要的值,所以说玻璃pass呢,它就没什么用,没用啊,这些东西呢,都是测试过的,没用,那你就一下子拿不到东西,怎么去拿到它接收过来的值呢?咱们之前怎么去接收这个流失数据的时。通过给谁绑定?Iq.on把定一个什么事件啊,德塔事件,在这个德塔事件呢,我就能拿到我想要的数据,就能拿到我们想要的数据,好,咱们记得这个写法是怎样写的吗?他呢,是不是一点点发送过来的,那么我们呢,在外面的先去let一个。Body等于一个空,是不是,然后在这里面呢,给body去。加等于上我这个对吧,然后最后呢,除了这个点on on塔事件还有一个点on。
28:00
哦,NN的时间是不是N的时间,在N的时间里面,是不是说明我这个数据是OK的OK的好,这时候呢,我们在这里面呢,再打一下这个body。来我这里面打一下包底,好,我们看一下能不能得到我们想要的结果啊,来重启一下服务器。好,这里面的它好像报了个错啊,这里面报了个错,报的什么错呢?Body pass is not DeFine,是不是啊,是不是这里不需要他了,不需要他了,再来一次。好,再来一次发烧我点。现在有没有接算返回值东西,你看是不是他在这里面已经拿到了是不是,但是咱们要注意呀,为什么这里能够拿到这个值呢?它明明返回的是一个buffer,看到没有,是不是一个buffer,为什么我在这里能拿到这个确切的值呢?为什么呢?明明我这卧底是不是个办法啊,为什么呢到呢。
29:05
是因为咱们开打一个值,这个值如果写,如果不是正常的一些基本数据类型,它会做什么事啊。它是如会调用to string方法转换了咱们这个八法数据是不是拿到了,它调用了to string是不是变成了字符串了,那咱们为了它更好一点,我们后面能够使用的话呢,我们是不是应该手动的调一下图司运比较好,手动调一下图啊啊这里呢,也要注意接收过来的数据呢,是一个buffer啊。啊,需要调用to string转换,是不是th string转换啊。转换成字符串才行,转换成字符串好,到现在为止呢,我这个body是不是就OK了,好那么好,我们呢,是不是应该要去什么时候拿到这body,然后想办法再把这个body的数据是保存在数据库中啊好,那在这呢,我们呢,哎跟上面跟之前我们写的套路一样,这呢是一个异步的方法,是不是,那么我们把它包装一层promise对象啊,因为呢,我们不想再去嵌到这么多回调函数,比如包装一层promise项,这里面呢,我就要就可以了。
30:23
好在这里面拿着是不是到时候把这个body给resolve出去啊,好这是都放进去啊,当它成功的时候呢,我把这个body呢出去,是不是那单好呢,我就不打印了,好resolve出去的话呢,我这里面呢,就会产生一个promise,是不是产生一个promise好那我这样写啊,我呢把这个呢,待会呢,我也保证它同步执行下去的话呢,我把这个函数改成。啊,S函数是不是,然后呢,这个pro线呢,我通过位是不是能拿到它的返回值啊,我就Co比教式的body是不是就能拿到我想要的返回值是不是好这个body呢,就是一个大的对象,它呢就会有所有的返回值了啊所有返回值了,而且呢,其实我要的是这个body,我要的是body里面的内容是不是,所以说如果你写再好一点的话呢,你还可以用个结构赋值,是不是拿到里面所有的内容啊,一个是ID,一个是。
31:21
Author,一个是这个time时间啊,再还有这个test文本,还有这个差的颜色,是不是还有我们的这个type类型,一共呢,有六个参数,是不是一共有六个参数对不对?好,这六个参数都拿到手了之后呢,下面我是不是可以想法处理它了,好,第一步呢,这里呢是做一个事情,就是想办法去获取请求参数,那第二部分呢,获取完之后我要干嘛呢?参数有了,这是用户发送过来的弹幕信息,我要做什么事?
32:01
啊,我要保存,保存在哪,保存到数据库中,是不是要保存在数据库中,那么好,那咱们要保存在数据库中的话呢,我们就得去建库了,是不是我们要去建一个相应的集合才能做好这个事啊,我们呢,这个集合去专门去存储弹幕的信息的,专门存储弹幕的信息,好,那我们呢,就要去建一个。同样的复制一份吧,复制一份叫做一个弹幕,是不是弹幕,弹幕这个一个集合,然后呢,在这里面呢,我们改一改,这个呢,我叫做弹幕。好,然后呢,这里面的值我没有这么多,是不是我没有这么多,我有的就是什么呢。我呢,这里一共有六个值,我把它都拿过来啊,我把它都拿过来,在我们的index里面一共有这六个值,是不是我这六个值呢?就是我要存储的东西,一个是ID,一个是author,一个time,一个T,一个color,一个type,是不是好ID呢?是不是到时候我要存储的ID啊。
33:07
它呢,应该是一个type为。看下他发过来的ID是什么类型啊,我们看一下。是什么类型?是一个字符串,是不是很明显的一个字符串,所以说它的值应该是一个string就好了,哎,来到我们的这个弹幕这个里面,它的值应该为string,然后呢,我们应该保证它是要不要保证唯一的,这里想一想。这里我们再想一想,要不要保证它是唯一的?这里虽然它是ID,但是要不要保证它是唯一的,要不要。你想一想啊,咱们呢,呃,到时候呢,会有很多用户是不是发送弹幕给我啊,那他们是不是我这个ID值代表的含义是什么呢。
34:03
现在我们想一想,这个ID代表的含义到底是什么?他是代表用户吗?不是因为用户有专代表是不是,那么ID代表什么呢?对啊,有同学说到了啊,这呢就是代表着是哪一条电影,是不是这个ID呢,就应该代表这个电影的信息,我有十几个电影,那么每一个ID呢,对应的就是不同的电影,是不是好了,那我这里知道它代表电影呢,那我们能要去保证它是唯一的吗?要不要?你想想我同一个ID下是不是可能有非常非常多条上千上万条咱们的弹幕信息啊,那么我这个每一条弹幕信息是不是ID值都是这个东东,那么你能够去保证它是唯一的吗?不可能,因为我要成千成万条这个ID是不是就不能保证它是唯一的,那么这里写个string就好了啊。
35:01
好,然后另外呢,为了防止跟我这个它里面创建的那个object ID冲突,冲突的话呢,我们待会呢,其实这个ID值啊,其实用它去保存的。我们是不是通过这个豆瓣ID来标识到底是哪一个电影啊,是不是他就放置这个豆瓣ID就可以了,好作者呢,他呢也是一个。自传是不是也是自传啊,时间呢,它应该是一个,它这第是个number啊,看一下它发送过来的有加引号吗?没有是个number类型是不是好T文本呢,它是一个。怎么算这个是不是发送的内容啊,用户发送的内容这个字传啊,这个看了呢,应该也是一个。怎么穿是不是啊,最后太类型,它是一个。Number来看这样它类行要加引号吗?没有是不是,那应该字符串啊,这看了呢,因为我们待会要放颜色啊,应该放字符串比较好,它这呢写的是个啊,这里好像写的是数字是不是啊,应该要放字符串比较好啊,我们可以看一下呃,前面呢看有没有这个值啊啊已经没了,应该放字符串比较好,因为我们到时候要放颜色,它们有什么什么井号FF是不是应该是个字符串比较好啊,字符串比较好啊,然到这呢,就把这些东西给整完了,东西建好了之后呢,把这些下面的东西呢完善一下啊。
36:29
八木啊。好,是不是完善好了,完善好了之后呢,我们就接着去使用它啊,使用它我们呢,要在这个index文件中是不是要引入啊,引入我的弹幕库啊,在上面呢,我们接下来在下面去接着引入呗,CTRLCCTRLV。啊,这里呢,我要引入的是弹幕这个东西啊好CTRLC再往下走,我在这里是不是要保存啊,怎么保存点,就是在这里是不是传个对象就行了,好就是将我这个东西是不是传进去就OK了,传进去就OK了啊。
37:07
将我用户发送过来的信息呢,直接传进去就可以了,就啥也不用动了,好,但是呢,这个ID呢,要改一改,我这里面不是ID是什么呢。使动吧ID,所以说这里要改一改它的值为ID,是不是值为ID,这个要改一改,其他东西不用改好保存之后呢,用等待一下没有问题的时候呢,我就最终呢,返回一个响应给他是不是好。我们再看一下啊,他呢应该介绍什么响应回来,我们这里呢,还差一个东西没有看啊,他应该介绍什么响应呢。我的这个弹幕呢,在我的页面上是不是要发送出去啊,发送出去之后呢,我们这里呢,请求体参数要知道,最后呢,我要知道响应的内容是什么,是不是你要告诉我响应的内容是什么。
38:01
所以说我们还得看一下最终响应给他的内容到底是什么东西啊,来在这里面呢,我们看一下有没有啊。呃,咱们现在是这个地址,是不是这个地址呢,看不到啊,我们还是要拿到测试的地址是不是才能看到啊,所以呢,我们还要还原成测试的地址,这个测试的地址呢,在我们的这个官网上会体现啊。往上翻一翻,他们会有个测试地址的,A拿上去。好,是不是这个地址,好,这个地址测试地址,我们再来看一下他呢,到时候测试的时候呢,他会发送什么内容给他。好,改成测试地址啊,我们看一下发送下弹幕的内容的时候呢,它会返回什么数据刷新一下,好嗯,没有问题的时候呢,点击发送一下弹幕信息啊,12345645。发送好,这里面呢,是不是发送一下弹幕的一个信息啊,我们看一下这个响应结果是什么,响应结果呢?是不是这个东西,这是不是就是最终的响应结果,你看我们这个参数呢,是不是我们发送过去的参数啊,12345,这呢是不是它最终响应点播的结果,同样的也是扣为零,是不是也是个代塔,这里面呢,是不是包含着这以下这些字段,来我们看一下这个请求请求请求这个地址也没问题,这呢就是我最终的响应的结果是不是。
39:26
CTRLC啊,这是响应的结果,来看一下它响应的什么结果给他啊。它呢,估计这个数据库呢,也是用漫果DB大建的,你看它有很明显的一些特点,是不是也有这个什么下划线ID的值是不是,你看你看它的数据库就是用芒果的DB大题的,是不是他呢,是不是也返回了一个这样东西给他,返回一个这样的数据给他啊那么待会呢,我们看一下。那实际上呢,这个数据呢,他有没有用上呢。他能返回一个这样的数据,给他返回一个IP地址,还返回了一个这样的地址,还有个日期是不是好,实际上这些东西到底有哪些东西我们可以用上呢?
40:14
啊,其实呢,这个data塔呢,它呢返返不返回呢,应该是不要紧的,因为呢,我这个时候呢,在页面上会立即有显示,这data塔返不返回无所谓,我们呢,无非就是要返回一个这样对象,对象里面的借这两个字段就可以了,而这个data塔里面的值呢,甚至可以为一个空的对象,甚至可以为一个空对象,我们呢,待会来测试一下它到底要什么,到底可不可以啊,来测试一下。我们呢,将它改回来,改成我们当前这个地址啊。改回来,改成当前的地址,然后呢,我们来测试一下。打开这里面,我们是不是接下来最后一步是不是要返回结果啊,通过e.C是不是返回一个结果好返回一个值第一呢,靠的为。
41:02
零是不是第二个塔为一个对项,我们返回这样东西给他是不是好看下行不行啊,重启一下服务器。重启一下服务器,然后呢,接下来呢,我去介绍它的返回值,来刷新一下咱们的页面。好,这样呢,是到时候访问我们的一个地址,打开好弹幕加载失败那是自然的,我去发送一下弹幕,123456,就这。弹幕呢,发送发送过去了是不是,但是呢,响应结果呢是一个。艾啊,说明呢,我们这里看一下是不是没有接收到响应啊,我们在这里好像出了点问题啊,嗯,在这里面他又出现了刚刚那个结果,说明呢,他是做什么事呢。说明我这个路由又没有处理到,它发送过来的请求,是不是又没有处理到,那么这一块呢,我们看一下没有处理到的话呢,说明我们之前设置的这个地址,设置的这个地址它没有生效啊,它如果生效的话呢,可以直接使用,看一下是不是这个请求地址错了。
42:10
呃,起求地址,你看它是不是V3后面加了V3啊,说明他们多了一个V3,所以说我们在这里还得看一下我们这里是不是A多加了个。V3是不是,然后上面呢,也多加了一个V3,把它去掉啊,去掉之后呢,我们再来一次刷新一下页面。刷新一下页面之后呢,再来一次啊好,等它加载完成之后呢,我们再来看啊,点击我们来发送一下弹幕,123456,我点。弹幕是不是发送过去了,好发送过去了呢,同样的响应的内容呢,是不是也接收到了,选的内容也接收到了啊,只不过呢,他这里。有没有闲的内容,有闲的内容是不是好,那说明呢,我这东西是不是OK的,可以的啊,他没有报错,我这个选过来是没有问题的,好那么我们暂上就这样写着,咱们呢,这个第一块呢就写完了啊,第一块接收用户的路由就写完了啊,首先呢,想办法获取到请求参数,接下来呢,将请求参数保存在数据库中是不是,然后最后返回一个这样的响应给他就行了,返回一个这样的响应啊,那么咱们第一步走好了,咱们再把这上面这一部分也写完,咱们是不是用户还得加载咱们的这个对应的这个弹幕信息啊好,它这个加载的时候呢,我们想一想啊。
43:29
首先第一个,第一个就是问题是我这个用户发送的时候,我这个ID呢,就不能写DEMO啊,它就应该写。我那个对应的豆瓣ID是不是就应该写豆瓣ID,是不是才能找查询到我对应的ID啊好,那么这里呢,我这里就写动画ID,那么我们怎么去获取到对应的当前的这个。电影的这个豆瓣ID呢?
44:00
怎么获取到这个电影的动ID?我们要把它填写到这里来才行。怎么获取?想想。通过怎样的方式获取?因为我必须要传输到ID,不然的话呢,他们都是DEMO了,那所有的电影的弹幕呢都在一起,那这样不行,我呢必须要区分开来,我A电影就是A电影的弹幕,B电影就是BB电影的弹幕,那么我在这里呢,就要通过ID去区分,所以说我这里的每一次的ID值呢都不一样,那么这里呢就不能写死了,那该怎么办呢?我在这里就想办法,还得获取到。当前电影的动漫ID,怎么获取到当前电影的动漫ID呢?
45:06
来告诉我,有什么方法可以获取到?想啊,这些东西都之前写过的,类似的一个套路,能不能想出来呢?怎么获取到动漫的?比如说这个功能给你,你怎么去设计出来呢?我需要这个ID值啊,没有这个ID值我做不到啊,我这是不是传这个动漫ID,我下面也是如此,也是传这个豆瓣ID都是一样的,但问题是你要传给我,我才你要把我给获取到,我才有啊,怎么获取到呢?通过怎样的方式获取?想想。告诉我这里通过怎样的方式?
46:00
啊,想到就说啊就会。就看你们昨天有没有认真写啊,如果认真写的话,这句话呢,应该想得到,想得到的,因为呢,其实是类似的场景啊,是跟前面某个场景很类似很类似的,我说这么明白了。通过怎样方式?用户的通过怎怎样的方式啊,大声告诉我。是吧,能想到吗?跟这个有什么区别?没有区别,是不是使用这个自定义属性啊,啊,咱们感觉咱们班不太喜欢说啊,是不是在这上面去写咱们这个啊,自定义属性啊,这些一定要自己说一说知道就说出来啊。那好去根据你们不知道的情况,如果不懂的话呢,再讲一讲啊,那咱们在这里写个什么呢。
47:03
然后把ID是不是咱们写个ID值吧,咱们不写这么长,写个ID值等于呢什么呢。是不是在这里写一个值啊,每一个的item,自己的豆瓣ID是不是好,这里面我是不是拿到这个ID值,那在下面呢,我能不能拿到呢?是不是也是同样的方式拿到它,它要获取的是这个ID,是不是获取就是这个ID,那这一次呢,每次发送请求的时候就会携带上这个动漫ID了,是不是我就能保存下来,那么在下面呢,这里面他每次切换的时候呢,这里做一些处理啊啊这个用户呢,应该是到时候要实时的获取当前登录的用户是谁再去填写是不是,那咱们没有的话呢,就详细假设一个是这个user,是这个div god啊咱们自定义的一个上帝的用户,然后这个呢是允许的,最大那信息是3000条,是不是可以自己手动设置的啊,然后呢,在这里可以设置的话呢,上面也可以设置的。
48:02
上面都可以设置的啊,比如说在这些属性呢,都是共通的,所有的属性设置的话呢,都能在这个开发者文档啊,都能在这个文档中找到它能够设置的所有的属性都在这里面,是不是都在这里面啊好,然后呢,我们再来看,然后这个ID值设定好了,对应的我后台中呢,就能拿到它了,拿到它之后呢,我们就在这里面index里面去设置,我呢首先要想办法获取什么呢?用户发送来的请求参数主要是这请求参数中的。是不是那个对应的ID值啊,我要根据这个ID值呢,我才能好去查找对应的数据啊,所以在这里呢,我们拿到这个它发送过来的这个ID等于这个IQ点。Query,是不是拿到查自传的ID值啊?好,这个ID呢,就是我的豆瓣ID,拿到这个ID值了,接下来我要做什么事呢?
49:06
去数据库中。中查找相应的。相应的电影弹幕信息,是不是相应的电影弹幕信息,在这里面去查找相应的电影弹幕信息,那咱们就是用这个弹幕点find方法是不是查找啊,查找的值呢,是填写的是,那我们ID,它的值为ID是不是好在这里面查找查找的呢?然后呢。然后呢,我们最终是不是有返回值啊,有返回值,返回值的话呢,我用那个改装成一个啊think函数是不是XYCSYC,然后呢,这里用位拿到它,我最终返回的这个值是不是它呢?是一个数组,是不是这个数组啊,这个数组的话呢,我接下来呢,就要想办法去变历,变历之后啊,最终呢,我要去组合成一个这样的结构,是不是返回给用户啊,组装成一个这样的结构返回给用户,那么我这里呢,就得去组装一下啊,我得首先些遍利是不是遍利它。
50:25
贝塔点for each是不是可以变低啊,它是个数组吗?在这里面呢,是不是有个item好,咱们目前应该只用的是item好,那这个item之后呢,我再想办法去拼起来啊,所以说呢,最终呢,返回给用户的结果呢,我定一个,比如说定一个RES在哪返回的键,返回的数,返回的数据呢?它应该为一个什么呢?然后它就为一个数组,我们先定它为一个数组啊,就是返回给用户的数据是不是定义成一个数组,然后在这里面进行for一时编历,然后每次编译的时候呢,我把这个数组点。
51:09
Push一个新的数字是不是好,这新数字里面的值呢?我就去写写写好啊,第一个只是item点,来看一下发送时间,弹类型,还有颜色,发送者和内容是不是,那对应着我们第一个是时间,叫做item.time第二个是item点。类型啊,第二个是不是类型啊,类型是type是不是,第三个是S怎么点。颜色color了。第四个是怎点。呃,内容test是不是第五个才是item,点那个作者啊,作者呢,在这里叫做什么呢?是不是author啊,叫做author啊来看一下是不是啊,第四个是弹幕的发送者,第五个是内容是不是,那咱们呢,这里换下顺序啊。
52:02
打逗号是不是这下就写完了,最终呢,我这里面是不是就会有所有的用户的数据,最终呢,再把它给响应返回响应是不是通过R点。r.sin的方法返回,相应返回一个对象,对象里面有两个值,一个是to为零,然后德塔为啊E是不是啊,这就是我最终要响应给用户的所有的数据了,就这样处理好就可以了啊好,那这里面呢,我们要看一下,待会这里面会不会出现什么问题。啊,咱们来看一下,咱们最终呢,这里面返回的是不是专字符串啊好,专字符串的话呢,诶,你能不能用解和赋值的方式拿到相应的数据呢。它是个dress字符串啊,是不是,所以说你如果想要它做好一点的话呢,你还得将这个字符串转化成。
53:11
转化成just对象才行,是不是转换just对象,所以说这里面最好包装一下啊,用just.pass包装一下,包装一下才行好,那这里面呢,我们就写的差不多了,我们接下来来看一下到底行不行啊,重启一下我们的服务器。那咱们来在firefox里面访问一下啊,这里面看下能不能调一个。好在里面访问一下,刷新一下页面。好,他呢,现在又说这问题,是不是看一下这里面有没有报错呢?没有报错啊,那再来一次。嗯,过呢,应该也没问题啊。从事。
54:03
呃,咱们这个work可能不太稳定好n work不行,没关系啊,咱们还有一种方式。啊,当然不行,如果不行的话,那我这个大幕的地址的话呢,待会就会出问题啊。所以说还是要去整一下好,现在是不是好了,好了来测试一下,我当我点击的时候,如果加载弹幕啊,好加载成功了,其实只不过呢,我这里面没有弹幕信息,是不是发送一下123456。发送一条弹幕是不是好,这时候呢,它会发送成功,然后呢,当你去是不是有啊,然后同样的弹幕呢,在这里有个调色板,看到没有,你点击开来呢,可以调色的啊,它这里呢,在这里这里好像颜色可以去调,然后呢,就可以告诉你,你这个东西出现在哪里,是不是啊,比如说发送个底部的弹幕呢,我可以写哈,是不是会说,诶是不是显示在这啊,Hello啊,这是我们发送弹幕,好发送弹。你比如说点击别的啊,先不看,再去点击新的,他是不是会去重新加载你的弹幕信息啊,好,这时候看一下啊。
55:06
是不是有这个123456,看到没有,有你发送的弹幕这个信息,然后再过一会儿呢,应该还会有,呃,剩下的那个内容啊。嗯,估计可能慢一些。呃,是在这里是不是也有啊啊,都会有你想要的弹幕的内容的啊,所以说呢,这样呢,就把我们这个弹幕的功能给实现了,那接下来呢,大家都可以测试,你们都可以访问我当前这个地址,直接可以在浏览器中打开,打开之后呢,这样大家都在咱们第一个这个视频上中测试,测试的话呢,就是自己发送些弹幕的内容,然后看一看行不行,然后呢,别人看一看能不能接收到其他人发送过来弹幕啊,大家呢,可以把分销算一下啊。好,我们停一下,这个呢,就是我们的整个弹幕的功能了。
我来说两句