Files
youlegames/codes/games/server/class/class.app.js
2026-02-04 23:47:45 +08:00

78 lines
2.1 KiB
JavaScript

///////////////////////////////////////////////////
//////////////cls_app: 应用基础类//////////////////
///////////////////////////////////////////////////
var cls_app = cls_app || {
//构造函数
new: function(_str_appname, _obj_packet) {
/*
参数说明:
_str_appname 应用名称
_obj_packet 所有应用的总包接口对象
*/
//创建一个实例
var app = {};
// ================= 实例的公有属性 ================= //
//应用名称
app.appname = _str_appname;
//总包接口
app.packet_face = _obj_packet;
//给客户端发包函数
app.SendPack = app.packet_face.SendPack;
//给http客户端发包函数
app.SendPack_Http = app.packet_face.SendPack_Http;
//给tcp客户端发包函数
app.SendPack_Tcp = app.packet_face.SendPack_Tcp;
//将app添加到packet_face的应用列表中
app.packet_face.applist.push(app);
//模块列表 [{"face":room_face,"facename":"room_face","routename":"room"}]
app.modlist = [];
// ================= 实例的公有方法 ================= //
//TCP客户端断开
app.OnTcpDisConnected = function(_str_tcpid) {
cls_app.OnTcpDisConnected(app, _str_tcpid);
}
//处理数据包
app.ReceivePack = function(_pack) {
return cls_app.ReceivePack(app, _pack);
}
return app;
},
// ================= 所有实例的共享方法 ================= //
//TCP客户端断开
OnTcpDisConnected: function(_obj_app, _str_tcpid) {
for (var i = 0; i < _obj_app.modlist.length; i++) {
if (_obj_app.modlist[i].OnTcpDisConnected) {
_obj_app.modlist[i].OnTcpDisConnected(_str_tcpid);
}
}
},
//处理数据包
ReceivePack: function(_obj_app, _pack) {
if (typeof(_pack) == "string") {
_pack = JSON.parse(_pack); //转换json
}
//路由各个模块
for (var i = 0; i < _obj_app.modlist.length; i++) {
if (_pack.route == _obj_app.modlist[i].routename) {
if (_obj_app.modlist[i].DoPack) {
var repack = _obj_app.modlist[i].DoPack(_pack);
//发包
if (repack && _obj_app.SendPack) {
_obj_app.SendPack(repack);
}
return repack;
}
break;
}
}
}
}