00:01
大家好,欢迎来到自己教育课程的学习,本系列课程呢,是自己教育的第一季,从零开始搭建游戏服务器,本节课是第三节课,给大家讲一下增加第三方包是怎么去增加的,主要讲一下mob socket,也是我们架构里面的通信方式啊。好,我们正式开始。第一个内容呢,是给大家说一下我们社区的公共平台啊,这是我们社区的。呃,订阅号大家关注一下,关注之后呢,大家回复客服呢,会获取助教的一些微信信息,大家可以啊。后面加一下,加完之后呢,如果对课程有意见或建议的话,可以提一下,同时呢,我们呃助教呢,会给大家建个微信群,如果有后面课程的变动或新发布课程的时候呢,我们会在微信群里通知。好,那我们来给大家说一下啊,本节课的内容啊,就是web socket的一个适合一个什么样游戏的一个什么样一个类型游戏啊,首先呢。大家要知道卧铺的一些特点啊,它和我们传统的呃通信方式,比如说HTTP啊,它有什么不同点。
01:06
大家这块有没有什么,呃,有没有了解过,大家可以在脑海里自己想一下。这里面我列列了大致两点啊,第一个op so的一个特点,它是双工通信的底层是TCP,来模拟一个we so的是我们。网页端的,也就是web的一个长链接。我们的网页是支持的。我们之前呢在做,呃,网页游啊或者什么都是啊。通信方式的话,大家一般都会用短连接,就是通信方式HTTP嘛,或者用长流行的方式。比如说我们客户端一直去定时去获取数据啊,这样达到一个模拟长链接的一个一个实现啊。或者sorry IO这块都是大家应该是接触过的,或者了解过,如果没有了解过,大家可以去网上看一下,就是web sorry的就是网网页端通信的话有几种方式,我这块主要给大家讲web的,呃web s的主要特点就是双方通信了,大家做游戏的时候,小游,特别是小游戏的时候呢,我们可以在服务器呢,主动推送给我们客户端,因为客户端和服务器之间是有心跳的,就会知道我们客户端在不在线,如果特别是排行榜,假如我们排行榜呃变化的时候呢,如果这个需求的话,司法提出来说,如果排行榜。
02:22
更新了,那我们就会增广播所有的在线的排行榜里边的数据的玩家,他的排行榜变化了,他那边可能会有一个事件触发呀。这样子我们服务器呢,就可以推送我们的数据到网关服务器,完了之后呢,网关服务器是广播所有的。跟网关服务器连接的所有玩家,这是我们广播的一个机制啊,顺便给大家说一下。主要是我们使用的话,就是相当于一个双方通信,微信小游戏的话,都是we的嘛,我们。一些知识的。第二个呢,就是第二个就微信小游戏了,就是说一下呃H5啊呃,支持数据推送啊,这块是我们比较好的,特别是网页端特别小游戏啊,小游戏这块,而且你在长链接并网网短链接的话,而且有好处呢,就不用频繁的升请网络IO了,这样的话对我们主体资源呢,也是比较节省的。
03:14
好,这是整个服,呃第二点就是我们web socket一个适合一个什么样的游戏类型的,完今天呢,我们就给大家实际编码一下,看一下我们socket是怎么给呃,怎么去在我们呃这个架构里面实现的,那么第第三点呢,我们就给大家先说一下去我们哪里能下到我们第3SOCKET这里面呢,我给大家。嗯,说一下我们的。我这先不动说一下我们。好,先到我们网站啊,我们网站是3W空浪点ltd啊。后缀是ltd的。呃,首先呢,在我们论坛下面有一个。Go语言第三方库使用和下载,大家点进去。
04:03
点击之后呢,会在大家找一下,会有一个购物员开发库版本官方下载地址,我们点进去之后呢,大家可以看一下,那这个里面呢,就是我们呃。呃,链接到那个。够让中国的。本身呢,其实我们在之前在香港服务器给大家建了一组,建了一个叫呃,Go浪点momm的一个链接过去的,后来呢,呃,由于我们国内是可以访问那个。访问那个我们谷歌的啊,就是就是大家知不知道。就狗点儿。谷歌点CN啊,其实我们国内是可以访问了,后来我们我们我们社区呢,就把香港服务器那个给关掉了,因为没有必要,当时大家考虑的就是说我们呃。下载那个安装包啊,比较给大家整理了一下。去吧,后来我就把它取消了,因为这个没有意义的,大家可以访问了吗。我们说一下我们地方第三方包,大家点进链接之后呢,点到这里面来。就会在这个扔到够让中国里面,不让中国呢,在。
05:04
右边啊,这会有下载的第三方包的一些。呃,下载的一个什么啊,看到没下载的一些次数吧,应该是。只有两个,我不大家可以我个人推荐啊,个人推荐我现在我现在使用的版本是。也不是是这个版本啊,就go浪就靠的谷歌点什么。谷歌点看嘛,一个这个是他目录啊,更大一点,我我看。嗯,就是这个分中包,大家可以看一下。我们使用的就是第一个,大家可以去下下,怎么下呢。你可以去点击链接,新的链接。点之后在这里面你直接点够就可以了。点够了,它会自动去。执行命,执行一些命令。等待一下,我只大家等待一下啊,大家看一下先。看怎么去找那个地方库。这是呃,比如我们后面加我们的一个,呃,买四用的话,这也可以,也是从这里下载的。
06:06
对。也在这里。很多啊,大家可以看一下,这个用的比较少了。GPC啊这个。或者我们去GI上,大家也可以去,呃,找到这个相关的。只要你有地方下载的话就可以。同时呢,大家可以看一下这。就是托管到我们这个下面了,大家可以去看这里行。在HUB上面下也是可以的。主要看你看你个人的习惯。对吧,看你个人一个什么样的一个习惯了,都是可以的。就在我们的。他说的是哪?
07:03
哦,他是他是举个例子啊。好,就不等了,大家知道怎么下就可以了,如果如果你下载有问题的话,就跟斌哥说,我到时候在社区里面啊,给大家建一个。或者把放到我们论坛上去,我到时候跟大家说一下。好,那我们就不不等了,不等了,我们就直接按正常的话会下载完之后呢,大家点下载的地址就会直接下载了。好,那我们就继续了。呃,今天呢,我们就给大家把我们的socket给大家啊,加到我们的一个。架构里面来好。那我们正式开始啊,我们还。显示。先简单整理一下我们工程代码。这种工商代码我们。这是多余的文件啊。这样子我们上节课是。可以,这是不要,这是测试的。
08:05
好,这个是我们上节课的代码在这里啊,大家看一下。嗯,好,那么我们加入第三方包的话,怎么加呢?给大家说一下,首先呢,我们给大家把第三方包先拿过,拿过来也就说正常的话,你是下载下来之后呢。嗯,我们这样子。或者你用命令啊下载也可以,但斌哥呢,我我个人建议啊,就是说都可以,就是你按照你如果你比较熟悉的话,你。你还是对吧。或者是像我这样直接下完之后拷过来就可以按照它的目录执行就可以了。这样子,这就是我们点下面的。我不可以的。大家下可以通过命令下,但是Windows我这没有装,你要用linus的话可以就呃自用啊,命令去下就可以了,后面的话我把这个包放到我们的JT工程j Hu我们的。我们的一个社区维护的一个项目,上面去吧,这样子大家也可可能后面好下一点好。
09:04
那这样子,这样子我们把它包含进。包含进来就可以了。呃,首先我们运行一下,看它能不能正常的,或者它应该提示我没有用。我来试一下。首先。首先他要能跑通啊。我们来运行一下,编译一下。编译一下OK。嗯,开始提示了,看到没。这个啊,这个是错误啊,不管这个错误是port port,我们当时。这个是我测试东西的时候。共四个八,看它已经提示了导入的包没有用这样子。大家在这种一种情况下呢,呃,给大家说一下,大家可能会经常呃经常这种情况,比如说我们在呃实际开发过程中啊,可能优化功能的时候,有些包就不用了,但是它还在我们项目里面,你可能会去掉啊,有可能你还你你你觉得可能这个包放在这里呢。
10:03
是不是可以不去掉或者怎么样,你可以这样子加一个就可以了,它它只这样的是。这样子是我们的一个。一个初始化的一个概念啊,它只只走包里的int函数,它不会。不会去执行了,也就不会过原的编辑器里面就不会说不使用了。嗯,看这样这样子的话,对你后面优化功能是比较好的,比如这个功能你觉得可以优化先放在这里。对吧,后面的话是直接加上来可以,但是这个是针对于我们类似ID,因为它没有像勾那么智能啊。这个先给他说一下,那好。那我们就给它改造一下,我们之前那个。按照我们之前给大家说的,我们改造一下,我看一下。工程代码里面。我们。上节课讲到的是。好,那我们在整个openck的包里面呢,我们优化一下我们这个结构啊,这。
11:03
那么这我们就要改到了。这块我们就暂时先。A,这句话我看啊,这句话可能会用到AB,那这句话肯定不用了。我们应该用的是HD。P的。它同样的,其实。我们用的是。我们路由呢,我们可以自己设置一下,那我们就设置一下呗,路由的话我们就设设为。波浪。Ltd也可以,我们社区的那个。大家可以根据自己的实际情况。后面呢,就是紧接着就是我们的一个。里面的一个。函数。的包包呢,它下面呢,也是我们的一个。他本是Honda。啊,这个。
12:01
Handle后面呢,就加我们的一个。函数函数呢,我们还用我们昨天那个呗,还是用我们这个。做一个处理这样子。好,我们监听的话,我们还是用这个,但是我们现在呢,就是给大家说一下,我们尽量完善一点,所以这块呢,我们最好是用。一个AR的接返回一个。嗯,在这里面呢,给大家说一下啊,大家对购对购员应该比较熟悉了,我就这里就不给大家。说一下基础的东西啊,如果基础有呃,比较薄弱的同学呢,可以去看我们一下。我们社区的另外一套课程,或者去我们腾讯腾讯课堂里面去看都可以,腾讯课堂有免费的。这里面呢,就是我们的return返回就可以,这块我们打印出一个错误吧。么么哒,Error打出来呗,是吧。把我们的error打出来。
13:00
哦,这儿可能错了,看一下。这呢,我们叫叫什么呢。网络错误。网络初始化搜索都可以的。那这样子我们其实按正常理论来说呢,其实我们就建立了一个web socket,你看它跟我们普通HTTP有什么不同呢。大家看有什么呢,除了这个函数不一样之外呢,其实就是用我们socket来做了一个什么一个路由的设置啊,我们编一下能不能编译过去。我们把这个啊,这个已经去掉了,初始化去掉了OK。嗯,他说没有,没有明确我们的。哦,这儿可能写是不是它没有提示的话,应该是。应该是他吧,Hander。
14:06
呃,同时我们在我们。这个HTV函数里面呢,我们其实也得做一个做一个数据的优化了,因为这块不一样了,我们要改一下,其实。他接过的只有一个,只有一个参数,也就是我们的。这是一个net一个,那同样这个里面我们也要包含进来啊。房间我们烧开就可以了。那这样呢,我们HTTP就不用了,其实HTTP不用的话,那我们看一下。我们做处理的话。等一下这里,我看怎么去处理。那么我们下面的这块就直接打印吧。RN打印出来,那我们先试一下。还编一下,看能不能过。
15:04
他说,是啊,这多了个S啊。哦,这个也不行。整个来说,卧小在我们整个项目当中呢,包括后面做小游戏的时候呢,其实你只要封装好之后呢,后面就不会变了。呃,整体没问题了,那我们给大家说,我们怎么去解析一下我们这个。呃,这个网络接口啊,现在我们整个大家回顾一下,现在我们我萨已经加好之后呢,我们把这行就注释掉了。大家可以。这是多核,多核的话我们默认其实可以不想,但是这块我觉得大家这个知识点要知道知道一点。是最好的。嗯,这里面我们进行的是888接口,那么我们路由是它web socket是直接跳转到我们这个EB里面来。同样的,那我们我萨这块呢,我们需要解析了,解析的话呢,呃,是这样子的。
16:04
解析的话呢,我给大家写一个。我们默认为date啊,这个等于什么呢?等于我们W,是我们过W对吧,这样子我们把打印出来。不是大家看一下。这一课就给大家实现就可以了,完了下一课呢,我因为是课程都是有进度有流程的嘛,就没写做什么东西,是不是大家应该是request,我们默认的是。I request完之后呢,我们这里。相当于我大家刚才request。那我们下面呢,就是。URL默认的一个,诶一个方法,那么我们调用的是。Y这开始请求它这个函数之后呢,我们再调一个。这边呢,我给大家说一下这块是比较重要的,这块我们加了date,也就是这个date呢,相当于取数据啊,也就是说我们传输过来的数据呢,必须满足一个格式,也就是这样子。
17:09
Data。等于。等于什么样的一个数据?这块呢,我们认识杰森啊。杰森的数据。大家理解了吧,这块我后面给大家说一下,这么设置的一个目的在哪里,因为我们我们针对于这些数据结构啊,特别是游戏,游戏开发者,我们数据结构呢,特别传输结构呢,是不需要被人知道的,如果我们只存杰森的话,大家想那大家随便一个客户端传过来,JS我们就处理的话,那怎么行呢?所以说我们必须有自己的一个方式方法来阻断,不适合于我,不是我们。客户端的一些消息,我们逻辑层也要处理,那网层也要处理的底层啊,比如说一怎么去处理啊,对吧,这时候大家先可以。简单了解一下就可以。好,那么在这里面呢,我们把这个data打印出来。
18:01
打印出来就可以了。这边呢,我就。好,这是我们切下。这是我们整个的一个。呃,我们这儿呢,就可以实现了一个socket的一个date,一个数据的网,数据的一个相当于一个。有获取。那么在这里呢,我们回顾一下,回顾一下我们刚才给大家讲串联起来,就整个把刚才讲的串联一下,比如说我们加入第三方包是怎么加入的,是不是有很多方法,我们用命令的话呢,也是可以加的,比如说。我们JT的一些命令盖的什么盖的格啊,或者什么是吧,都是可以的,后面你更新的话也是比较好的,但是我个人建议啊,因为这个库的话呢,是在。是在去年的时候,我看下不下,下不下来,大家看到没,它有的时候就很慢,或者是对吧,呃,这跟网络可能有关系,但是这个包呢,我建议大家最好是自己保存一份,保存到自己的网盘里面,或者是。
19:13
呃,自己的一个项目,项目的一个。Window里面就是说最后呢,我们所有的所有的项目呢,都有规划,所有的第三方包呢,都是放到我们的window下面啊,因为现在是第一个版,第一期我就不给大家规范,因为我们先把整个架构跑起来。好吧。这块呢,建议大家把所有用的包,特别是你项目当中用的包呢,自己都下来之后保存一份。因为如果一旦。网络上不维护了,你这个项目的话,可能对吧,你项目本地也有是有,但是如果你项目代码没了之后,你虽然你的你的文档上还有这个包,那你到最后面的话就对吧,就给人。就不是很好,后边那后边的维护者呢,就不好做了,所以我建议把这些包都放到我们本地啊,是最好的克隆一份就可以了。
20:02
好加进来之后呢,加进来方法也很简单,跟我们普通标准库的加载是一样的。对吧,直接按照我们的目录加载就可以了。这是web socket web socket的一个方法,比如我们去做一些路由操作啊,在这里面我们实现了,同时它只需要一个参数就可以了。OK,这是我们的。嗯,暂时就给大家,呃,说这么多了,我不想因为我们下节课呢,会给大家讲一下那个我们因为我们的H5,因用H5测试测试段呢,给大家说一下我们的个消息定制和和我S的一个通信的方式。包括后面我给大家封装一下那个我们的消息处理函数啊,我给大家看一下,目前我们。另外一个项目里面封装的一些函数啊。嗯,除了封装函数呢,其实在这里面呢,下节课我们在这里面给大家做一个东西,也就是我们建立一个。建立一个玩家结构机制。建立玩家的结构。在这。
21:02
为什么要建立玩家解歌呢?首先。PLAY2的信息呢,是我们玩家的信息啊,大家觉得我们作为网关服务器或者是我们的。我给大家先写填写一下啊,调这个数据。是这样子。网关服务器对吧,对于我们整个网关服务器而言。呃,或者对我们game而言,玩家的数据管理呢,是我们整个的一个。首要的目标啊,就是玩家链接连进来了,他会不消,连进来了,也就是正常通过我们路由之后呢,这会没有报错,没有出现网络错误的话,正常连进来之后呢,我们这里面会携带一些信息预览。对吧。那好,我们这样子下节课呢,我们会剖析一下web里面的一些信息,给大家讲一下整个的一个和我们怎么去保存,正常是保存的这个结构呢。比如我们设一个connect。那么它呢,其实等于什么,我们就可以WS就可以了,后面是其他数据,后边可能是MAP1MAP的一些安全东西些。
22:05
对吧。最安全的一些。安全的一些。标志对吧,安全的一些东西。可能是这样子,大家理解吧,嗯,可能最后是成变成了这样子,嗯。完了后面这里面我们再去处理结构,处理结构处理结构。处理。处理结果信息。这个信息还说。大家理解了吧,也就是说后面的话,我们会在这里面进行了一个消息分发处理了,嗯,整个的话流程的话,其实就是这样,We so,建立给大家建立起来了,大家如果这块有什么疑问的话呢,嗯,就去我们这个。呃,客服的微信群里面大家建之后呢,大家去那里提问就可以了,或者去我们QQ群啊,因为呃,大家买课程之后呢,或者是没这,因为是这个是买课程之后呢,可以有一个付费的QQ群,大家可以。
23:04
在里面提问也是可以的,我们这会专人的给大家解答一下。整节课呢,我希望大家先把。我不这节课的。怎么去实现的,给大家打一下,因为现在你可能看着也。也不也能值得实现,但是没有跑起来是吧,我们下节课呢,会给大家建立一个玩家结构,通过玩家结构呢,去怎么保存这个函数信息,完了顺便呢,我们把OPPO里面的相关的技术。技术基础知识给大家讲一下。好吧,嗯,我们下节课可以大家看一下下节课的安排啊。再有一个安排就是实现消息自定义,还有消息虚拟化的处理。每节课不用太多时间啊,太多时间大家可能消化不了上13节课。好,那我们就这节课就到这里,我们我们下节课再见。
我来说两句