接上一节,当我们完成了客户端 + 服务端的互通后,接下来,就先考虑客户端,如何对请求和相应的响应进行联系。
所以,这次我完善了一下我们的请求 和响应,来确保,我们每一次请求,对应的响应数据,我们都能够正常的拿到正确的数据。
创建一个net 包,里面的
data,是数据接收的基类,是一个抽象类,
export abstract class mvcData {
// 用来存储数据
public abstract setData(data :any);
}
mvcCmd,是用来绑定 cmd 于 event 关系的类
export class MVCController {
private static _Instance : MVCController
public static get instance(): MVCController {
if (!this._Instance) {
this._Instance = new MVCController();
}
return this._Instance;
}
public static map = new Map<number,mvcCmd>;
public static init(){
// 登入
MVCController.map.set(new LoginEvn().code,new loginCmd());
}
}
mvcEvent , 是用来发数据的基类
export class MVCController {
private static _Instance : MVCController
public static get instance(): MVCController {
if (!this._Instance) {
this._Instance = new MVCController();
}
return this._Instance;
}
public static map = new Map<number,mvcCmd>;
public static init(){
// 登入
MVCController.map.set(new LoginEvn().code,new loginCmd());
}
}
mvcCmd , 是用来接收数据的基类
export abstract class mvcCmd {
// 用来接受数据
public abstract handler( data : any)
}
type : 是客户端与服务端定义好的协议,
export enum Type {
LOGIN = 1001,
}
这样,我们就定义好我们的基本数据绑定框架了,接下来,我们以用户登入为例子,
我们未每一个,请求 响应 数据存储,都创建一个脚本。这样我们的数据就可以看的非常的直接与轻松,
当我们创建好这些脚本之后,我们还需要在mvcController 里面进行注册
这样我们的数据就绑定好啦。
接下来我们再修改一下socket的脚本,使他适配上我们定义的结构。
我们在发送这里,添加一个参数处理。更加方便我们去适配数据。
收到数据,我们就进行查找,是否有这个请求如果有,我们就进行分发,没有就报错。
这是一个非常非常基础简单的结构,后面还可以优化成,给每个event,cmd ,data。写上对应的泛型,这样我们就更加直观的看到是什么数据,还有一些回调的扩展什么的,都可以继续加强。