/////////////////////////////////////////////////// //////////////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; } } } }