接着上一篇,我们要开始处理tcp的数据交互了,为了方便我们调用到想要用的逻辑,我们需要用一个中间层包一下,并且声明出常量来标识需要调用的是什么逻辑。
1、声明types类用于归纳常量标识
新建一个types.js
2、声明pack类用于处理客户端的请求与响应数据
新建一个pack.js
这里声明的类为静态属性,方便后期处理
3、创建Controller层,处理tcp的请求与响应
首先创建BaseController类,所有对应的类源自这里继承,可以存一些全局属性。我把types扔了进去,方便后续调用
requestCode为标识,用于归纳管理用户在哪种状态的操作(对应 RequestCode: {
RequestNone: 0,
User: 1, // 用户
Room: 2, // 房间
Game: 3, //游戏
},)
后续创建对应的三个类
4、创建ControllerManager中间层处理tcp请求
创建ControllerManager,并且在client类引入,传入客户端的数据,和client本身this
5、开始书写tcp逻辑处理
先声明pack。并且将客户端传来的值对象化并且赋值给requestPack。如果解析JSON失败则返回失败状态
补全逻辑===========
添加client类中的send方法,向客户端发送数据
添加types.js中抛出的错误信息
6、调试
以上逻辑写完了,我们开始调用试试
run下test/clint_socket.js
额。乱码了,我们把client.setEncoding(‘binary’);改一下
这下对了,我们把请求的方式改成对应的code
好的 我们添加一下对应的方法,并且修改一下clint_socket
再run一下。
好了 搞定了。
之后我们就可以愉快的在每个模块中添加对应的功能了
对应的GitHub地址为:GitHub
该系列的其他篇幅:
独立游戏开发学习(一)
独立游戏开发学习(二)-Stable Diffusion的运用](独立游戏开发学习(二)-Stable Diffusion的运用 - #18,来自 huaqiesf)
独立游戏开发学习(三)-联机服务器的搭建tcp篇 ](独立游戏开发学习(三)-联机服务器的搭建tcp篇 - #4,来自 handsome)