目录结构调整
This commit is contained in:
25
codes/games/sales_service/server/app.js
Normal file
25
codes/games/sales_service/server/app.js
Normal file
@@ -0,0 +1,25 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////系统服务app////////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var app_server = app_server || cls_app.new("server", packet_face);
|
||||
|
||||
//加载或更新js文件
|
||||
min_loadJsFile("server/loadjs/mod.js", function (){
|
||||
//服务器心跳包
|
||||
min_loadJsFile("server/heartbeat/mod.js", function (){
|
||||
//通道管理
|
||||
min_loadJsFile("server/channel/mod.js", function (){
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
//TCP客户端连上
|
||||
app_server.OnTcpConnected = function(_str_tcpid) {
|
||||
for (var i = 0; i < app_server.modlist.length; i++) {
|
||||
if (app_server.modlist[i].OnTcpConnected) {
|
||||
app_server.modlist[i].OnTcpConnected(_str_tcpid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
239
codes/games/sales_service/server/channel/mod.js
Normal file
239
codes/games/sales_service/server/channel/mod.js
Normal file
@@ -0,0 +1,239 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////// 通道管理 ///////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var mod_channel = mod_channel || cls_mod.new("mod_channel", "channel", app_server);
|
||||
|
||||
//最小通道id
|
||||
mod_channel.minid = 100000;
|
||||
//最大通道id
|
||||
mod_channel.maxid = 999999;
|
||||
|
||||
//可用的通道id列表
|
||||
mod_channel.ids = [];
|
||||
mod_channel.ids.length = mod_channel.maxid - mod_channel.minid + 1;
|
||||
for (var i = 0; i < mod_channel.ids.length; i++) {
|
||||
mod_channel.ids[i] = mod_channel.minid + i;
|
||||
};
|
||||
//可用的通道id列表的有效长度
|
||||
mod_channel.validlen = mod_channel.maxid - mod_channel.minid + 1;
|
||||
|
||||
//通道列表
|
||||
mod_channel.list = [];
|
||||
mod_channel.list.length = mod_channel.maxid - mod_channel.minid + 1;
|
||||
|
||||
mod_channel.test = function(pack){
|
||||
pack.data = "123456789";
|
||||
return pack;
|
||||
}
|
||||
|
||||
//创建
|
||||
mod_channel.create = function(pack){
|
||||
//在有效通道id列表中随机数组下标
|
||||
var idx = min_random(0, mod_channel.validlen - 1);
|
||||
//确定通道id
|
||||
var id = mod_channel.ids[idx];
|
||||
//将有效数组的最后一个房号移至该位置
|
||||
if (idx < mod_channel.validlen - 1) {
|
||||
mod_channel.ids[idx] = mod_channel.ids[mod_channel.validlen - 1];
|
||||
};
|
||||
mod_channel.ids[mod_channel.validlen - 1] = 0;
|
||||
//有效数组长度减1
|
||||
mod_channel.validlen = mod_channel.validlen - 1;
|
||||
//根据通道id创建通道
|
||||
var o_channel = {};
|
||||
o_channel.id = id;
|
||||
o_channel.plist = []; //谁在通道里面
|
||||
//添加到通道列表中
|
||||
mod_channel.list[id - mod_channel.minid] = o_channel;
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.channelid = id;
|
||||
return pack;
|
||||
}
|
||||
|
||||
//释放
|
||||
mod_channel.free = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
//释放通道
|
||||
mod_channel.list[idx] = null;
|
||||
|
||||
//释放通道id
|
||||
mod_channel.ids[mod_channel.validlen] = channelid;
|
||||
mod_channel.validlen = mod_channel.validlen + 1;
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
return pack;
|
||||
}
|
||||
|
||||
//加入
|
||||
mod_channel.join = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
o_channel = mod_channel.list[idx];
|
||||
var p = {};
|
||||
p.conmode = pack.conmode;
|
||||
p.fromid = pack.fromid;
|
||||
o_channel.plist.push(p);
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
return pack;
|
||||
}
|
||||
|
||||
//退出
|
||||
mod_channel.exit = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
o_channel = mod_channel.list[idx];
|
||||
for (var i = 0; i < o_channel.plist.length; i++) {
|
||||
if (o_channel.plist[i]) {
|
||||
if (o_channel.plist[i].fromid == pack.fromid) {
|
||||
o_channel.plist[i] = null;
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
return pack;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "未在通道内";
|
||||
return pack;
|
||||
}
|
||||
|
||||
//广播
|
||||
mod_channel.broadcast = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
var content = pack.data.msg;
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
o_channel = mod_channel.list[idx];
|
||||
for (var i = 0; i < o_channel.plist.length; i++) {
|
||||
if (o_channel.plist[i]) {
|
||||
//广播前端
|
||||
var msg = {};
|
||||
msg.app = pack.app;
|
||||
msg.route = pack.route;
|
||||
msg.rpc = pack.rpc;
|
||||
msg.conmode = o_channel.plist[i].conmode;
|
||||
msg.fromid = o_channel.plist[i].fromid;
|
||||
msg.data = {};
|
||||
msg.data.state = 0;
|
||||
msg.data.msg = content;
|
||||
mod_channel.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//断线
|
||||
mod_channel.OnTcpDisConnected = function(str_tcpid){
|
||||
for (var i = 0; i < mod_channel.list.length; i++) {
|
||||
if (mod_channel.list[i]){
|
||||
for (var j = 0; j < mod_channel.list[i].plist.length; j++) {
|
||||
if (mod_channel.list[i].plist[j]) {
|
||||
if (mod_channel.list[i].plist[j].fromid == str_tcpid) {
|
||||
//广播前端
|
||||
var msg = {};
|
||||
msg.app = mod_channel.app.appname;
|
||||
msg.route = mod_channel.routename;
|
||||
msg.rpc = "disconnected";
|
||||
msg.data = {};
|
||||
msg.data.channelid = mod_channel.list[i].id;
|
||||
msg.data.idx = j;
|
||||
for (var k = 0; k < mod_channel.list[i].plist.length; k++) {
|
||||
if (k != j){
|
||||
msg.conmode = mod_channel.list[i].plist[k].conmode;
|
||||
msg.fromid = mod_channel.list[i].plist[k].fromid;
|
||||
mod_channel.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mod_channel.timer = min_ontime(function(){
|
||||
mod_channel.ran = min_random(1,100);
|
||||
}, 2000);
|
||||
BIN
codes/games/sales_service/server/channel/通道接口.xlsx
Normal file
BIN
codes/games/sales_service/server/channel/通道接口.xlsx
Normal file
Binary file not shown.
37
codes/games/sales_service/server/heartbeat/mod.js
Normal file
37
codes/games/sales_service/server/heartbeat/mod.js
Normal file
@@ -0,0 +1,37 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////服务器心跳包///////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var mod_heartbeat = mod_heartbeat || cls_mod.new("mod_heartbeat", "heartbeat", app_server);
|
||||
|
||||
// mod_heartbeat.TCPList = [];
|
||||
|
||||
//TCP客户端连接
|
||||
// mod_heartbeat.OnTcpConnected = function(str_tcpid)
|
||||
// {
|
||||
// if (min_ary_indexof(mod_heartbeat.TCPList, str_tcpid) == -1)
|
||||
// {
|
||||
// if (str_tcpid){
|
||||
// mod_heartbeat.TCPList.push(str_tcpid);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
//TCP客户端断开
|
||||
// mod_heartbeat.OnTcpDisConnected = function(str_tcpid)
|
||||
// {
|
||||
// if (str_tcpid){
|
||||
// min_ary_delval(mod_heartbeat.TCPList, str_tcpid);
|
||||
// }
|
||||
// }
|
||||
|
||||
//发送心跳包
|
||||
mod_heartbeat.doheartbeat = function()
|
||||
{
|
||||
if ((mod_heartbeat.app) && (mod_heartbeat.app.SendPack_Tcp))
|
||||
{
|
||||
mod_heartbeat.app.SendPack_Tcp([-1], '{"com":"@serverheartbeat"}');
|
||||
}
|
||||
}
|
||||
|
||||
//开启定时器发送心跳包
|
||||
min_ontime(mod_heartbeat.doheartbeat, 20000);
|
||||
16
codes/games/sales_service/server/loadjs/mod.js
Normal file
16
codes/games/sales_service/server/loadjs/mod.js
Normal file
@@ -0,0 +1,16 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////////加载或更新js文件/////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var mod_loadjs = mod_loadjs || cls_mod.new("mod_loadjs", "loadjs", app_server);
|
||||
|
||||
mod_loadjs.doloadjs = function(obj_msg)
|
||||
{
|
||||
if (!obj_msg.data.flag) {
|
||||
min_loadJsFile(obj_msg.data.jsfile);
|
||||
} else {
|
||||
min_loadJsFile(obj_msg.data.jsfile, function(){}, 1);
|
||||
}
|
||||
|
||||
obj_msg.result = "success";
|
||||
return obj_msg;
|
||||
}
|
||||
Reference in New Issue
Block a user