78 lines
2.1 KiB
JavaScript
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;
|
|
}
|
|
}
|
|
}
|
|
}
|