第一次提交 游戏界面资源数据已更新
This commit is contained in:
630
tools/server2017-64-stable/test/server/servernet.js
Normal file
630
tools/server2017-64-stable/test/server/servernet.js
Normal file
@@ -0,0 +1,630 @@
|
||||
function mylog(data) //log
|
||||
{
|
||||
// console.log(data);
|
||||
};
|
||||
function mylog2(data) //log
|
||||
{
|
||||
console.log(data);
|
||||
};
|
||||
var eylj=60*30*1000*1000;//恶意链接时间
|
||||
|
||||
var tcpinit = 10000;
|
||||
var httpinit = 10000;
|
||||
var constcount=0;
|
||||
//var constcountinit=10;
|
||||
var constcountinit=9989998;
|
||||
constcount=constcountinit+tcpinit;
|
||||
|
||||
|
||||
|
||||
var rf = require("fs");
|
||||
var data1 = rf.readFileSync("port.txt", "utf-8");
|
||||
var obj = JSON.parse(data1);
|
||||
var oo=obj[0];
|
||||
var ll;
|
||||
for (var i = 0; i < obj.length; i++) {
|
||||
// var oo = obj[i];
|
||||
// server_heihu(oo.tcpport, oo.httpport);
|
||||
};
|
||||
|
||||
function $() {
|
||||
return document.getElementById(arguments[0]);
|
||||
}
|
||||
var memo1=$('txtChatMain');
|
||||
var title1=$('btnChatSend');
|
||||
var countmemo1=0;
|
||||
function clearmsg() {
|
||||
memo1.value = '黑狐服务器2016'+ '\n';
|
||||
};
|
||||
|
||||
function logmsg(msg) {
|
||||
memo1.value += msg + '\n';
|
||||
countmemo1++;
|
||||
if (countmemo1>1000)
|
||||
{
|
||||
clearmsg();
|
||||
}
|
||||
};
|
||||
|
||||
function logtitle(msg) {
|
||||
title1.value = msg ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Array.prototype.indexOf = function(val) {
|
||||
for (var i = 0; i < this.length; i++) {
|
||||
if (this[i] == val) return i;
|
||||
}
|
||||
return - 1;
|
||||
};
|
||||
|
||||
Array.prototype.remove = function(val) {
|
||||
var index = this.indexOf(val);
|
||||
if (index > -1) {
|
||||
this.splice(index, 1);
|
||||
};
|
||||
return index;
|
||||
};
|
||||
|
||||
function server_findip(str) //查找ip
|
||||
{
|
||||
var j = 0;
|
||||
var x;
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
|
||||
x = parseInt(str[i]);
|
||||
if (!isNaN(x))
|
||||
|
||||
// if (str[i]=='1')
|
||||
{
|
||||
j = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return str.substr(j, str.length - j);
|
||||
|
||||
}
|
||||
|
||||
//---------------------------
|
||||
|
||||
function clientleave(mode, conn, data) //tcp
|
||||
{
|
||||
webserver.sendText('@toleave1:' + conn.ljid);
|
||||
};
|
||||
|
||||
function clientlogin(mode, conn, data) //tcp
|
||||
{
|
||||
|
||||
webserver.sendText('@tologin1:' + conn.ljid + ':');
|
||||
};
|
||||
|
||||
function httprev_todo(mode, conn, data) // http
|
||||
{
|
||||
webserver.sendText('@toserver' + ':' + conn.ljid + ':' + data);
|
||||
};
|
||||
|
||||
function tcprev_todo(mode, conn, data) ////tcp
|
||||
{
|
||||
webserver.sendText('@toserver' + ':' + conn.ljid + ':' + conn.ip + ':' + data);
|
||||
};
|
||||
|
||||
function myfind(str,cha,num){//0是第一次出现
|
||||
var x=str.indexOf(cha);
|
||||
for(var i=0;i<num;i++){
|
||||
x=str.indexOf(cha,x+1);
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
function serverrev_fromdo(mode, conn, data) //tcp http
|
||||
{
|
||||
mylog("逻辑服务器处理返回:" + data);
|
||||
|
||||
var tou = data.substr(10, 5);
|
||||
var pos2=myfind(data,':',1);//位置
|
||||
if (pos2<5)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var data1=data.substr(0, pos2);
|
||||
var arrs=data1.split(":");
|
||||
mylog("解析数据:" + data1);
|
||||
var mod = 0;
|
||||
if (tou == 'http_') {
|
||||
mod = 1;
|
||||
};
|
||||
|
||||
var ss = '@tooneone' + ':' + arrs[1] + ':';
|
||||
ss = data.substr(ss.length, data.length - ss.length);
|
||||
|
||||
if (mod == 1) {
|
||||
var response = lists_all_http[arrs[1]];
|
||||
response.write(ss);
|
||||
response.end();
|
||||
lists_all_http[arrs[1]]=null;
|
||||
//response.time;
|
||||
//response.ljid;
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
if ('@toclosed' == arrs[0]) {
|
||||
|
||||
mod = 2; //关闭连接
|
||||
}
|
||||
|
||||
if (arrs[1]=="-1")//群发
|
||||
{
|
||||
//群发
|
||||
broadcast(tcpserver,ss);
|
||||
return;
|
||||
}
|
||||
|
||||
var ids = arrs[1].split(",");
|
||||
|
||||
for (var u = 0; u < ids.length; u++) {
|
||||
if (lists_all[ids[u]]) {
|
||||
if (mod == 2) {
|
||||
lists_all[ids[u]].close(2001); //主动关闭连接
|
||||
} else {
|
||||
lists_all[ids[u]].sendText(ss);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
//============================================================================
|
||||
//var http2 = require("http"); //提供web服务
|
||||
var http = require("http"); //提供web服务
|
||||
var url = require("url"); //解析GET请求
|
||||
var query = require("querystring"); //解析POST请求
|
||||
//http://127.0.0.1:4321/dfw.html?num=32&num1=13&type=add&name=dfw
|
||||
//服务
|
||||
var httpserver = function(request, response) {
|
||||
try {
|
||||
var url1 = request.url;
|
||||
|
||||
mylog(url1);
|
||||
|
||||
var exe = url1.substr(url1.length - 4);
|
||||
if (exe == '.ico' || exe == '.jpg' || exe == '.png') {
|
||||
mylog("exe " + exe);
|
||||
response.writeHead(200, {
|
||||
"Content-Type": "text/json",
|
||||
"Access-Control-Allow-Origin": "*"
|
||||
});
|
||||
response.end();
|
||||
return;
|
||||
};
|
||||
|
||||
response.writeHead(200, {
|
||||
"Content-Type": "text/json",
|
||||
"Access-Control-Allow-Origin": "*"
|
||||
});
|
||||
if (request.method == "GET") {
|
||||
response.ljid = 'http_GET' + httpinit;
|
||||
} else {
|
||||
response.ljid = 'http_POST' + httpinit;
|
||||
};
|
||||
|
||||
response.time = new Date();
|
||||
lists_all_http[response.ljid] = response;
|
||||
|
||||
httpinit++;
|
||||
if (httpinit > 59999) {
|
||||
httpinit = 10000;
|
||||
}
|
||||
|
||||
//判断是GET/POST请求
|
||||
if (request.method == "GET") {
|
||||
var params = [];
|
||||
params = url.parse(request.url).query;
|
||||
mylog("===");
|
||||
mylog(params);
|
||||
//console.log(params.query);
|
||||
mylog(request.url);
|
||||
|
||||
/*params['fruit'] = compute(params);
|
||||
params['ljid'] = response.ljid;
|
||||
|
||||
var pathname = url.parse(request.url).pathname;
|
||||
params['pathname'] = pathname;
|
||||
params['url'] = request.url;
|
||||
|
||||
var arg1 = url.parse(request.url, true).query; //arg1 => {name:'a',id:'5'}
|
||||
|
||||
var str = JSON.stringify(arg1);
|
||||
|
||||
console.log("ljid " + response.ljid);
|
||||
console.log("url " + request.url);
|
||||
|
||||
console.log("Request for1 " + str);
|
||||
|
||||
console.log("name0 = " + arg1.name);*/
|
||||
|
||||
//var name = query.parse(str).name; //name => a
|
||||
//console.log("name = "+name);
|
||||
if (webserver == null) {
|
||||
response.write("webserve-服务器未工作" + url1);
|
||||
|
||||
response.end();
|
||||
lists_all_http[response.ljid]=null;
|
||||
} else {
|
||||
httprev_todo('http', response, decodeURI(params));
|
||||
}
|
||||
} else {
|
||||
var postdata = "";
|
||||
request.addListener("data",
|
||||
function(postchunk) {
|
||||
postdata += postchunk;
|
||||
});
|
||||
|
||||
//POST结束输出结果
|
||||
request.addListener("end",
|
||||
function() {
|
||||
//var params = query.parse(postdata);
|
||||
//params['fruit'] = compute(params);
|
||||
//params['ljid'] = response.ljid;
|
||||
mylog("收到:post " + postdata);
|
||||
if (webserver == null) {
|
||||
response.write("webserve-服务器未工作");
|
||||
|
||||
response.end();
|
||||
lists_all_http[response.ljid]=null;
|
||||
} else {
|
||||
httprev_todo('http', response, postdata);
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
} catch(err) {
|
||||
mylog2("httpserver:" + err);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//计算
|
||||
var compute = function(params) {
|
||||
switch (params['type']) {
|
||||
case "add":
|
||||
return parseFloat(params['num']) + parseFloat(params['num1']);
|
||||
break;
|
||||
case "subtract":
|
||||
return parseFloat(params['num']) - parseFloat(params['num1']);
|
||||
break;
|
||||
case "multiplication":
|
||||
return parseFloat(params['num']) * parseFloat(params['num1']);
|
||||
break;
|
||||
case "division":
|
||||
return parseFloat(params['num']) / parseFloat(params['num1']);
|
||||
break;
|
||||
};
|
||||
};
|
||||
|
||||
//开启服务在127.0.0.1:8080
|
||||
//server_heihu(oo.tcpport, oo.httpport);
|
||||
var httpport=oo.httpport;
|
||||
var tcpport=oo.tcpport;
|
||||
if (httpport) {
|
||||
http.createServer(httpserver).listen(httpport);
|
||||
mylog("http Server start!:" + httpport);
|
||||
logmsg("http Server start!:" + httpport);
|
||||
};
|
||||
|
||||
//http2.createServer(server).listen(4322);
|
||||
var ws = require("nodejs-websocket");
|
||||
mylog("开始建立连接...");
|
||||
|
||||
var game1 = null,
|
||||
game2 = null,
|
||||
game1Ready = false,
|
||||
game2Ready = false;
|
||||
var webserver = null;
|
||||
var myid = 0;
|
||||
|
||||
|
||||
|
||||
if (tcpport > 0) {
|
||||
|
||||
var tcpserver = ws.createServer(function(conn) {
|
||||
|
||||
try {
|
||||
|
||||
var er=0;
|
||||
// mylog(conn.socket);
|
||||
// mylog(conn.socket.remoteAddress);
|
||||
// mylog(conn.socket.remotePort);
|
||||
|
||||
//console.log("Headers对象");
|
||||
//console.log(conn.headers);
|
||||
var ip = server_findip(conn.socket.remoteAddress);
|
||||
er=1;
|
||||
conn.ip = ip;
|
||||
|
||||
|
||||
var ok=-1;
|
||||
|
||||
for (var i1=0;i1<constcountinit;i1++)
|
||||
{
|
||||
tcpinit=tcpinit+1;
|
||||
|
||||
if (tcpinit > constcount) {
|
||||
tcpinit = 10000;
|
||||
}
|
||||
mylog('tcpinit1:'+tcpinit);
|
||||
if ((typeof(lists_all['tcp_' + tcpinit])=="undefined")||(lists_all['tcp_' + tcpinit]==null))
|
||||
{
|
||||
mylog(lists_all['tcp_' + tcpinit]);
|
||||
mylog('tcpinit2:'+tcpinit);
|
||||
ok=tcpinit;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (ok==-1)
|
||||
{
|
||||
mylog2('连接已经满了:'+tcpinit);
|
||||
conn.isserver = -1;//没进队列
|
||||
conn.close(1000);
|
||||
return;
|
||||
}
|
||||
er=2;
|
||||
|
||||
|
||||
|
||||
conn.ljid = 'tcp_' + tcpinit;
|
||||
conn.isserver = 0;
|
||||
conn.contime=(new Date()).getTime();
|
||||
conn.readpack=0;//还没有包
|
||||
|
||||
|
||||
// lists.push(conn);
|
||||
|
||||
lists_all[conn.ljid]=conn;
|
||||
mylog("New connection ---" + conn.ip+'/'+ conn.ljid+'/'+tcpinit);
|
||||
|
||||
er=3;
|
||||
|
||||
if (webserver) {
|
||||
clientlogin('tcp', conn);
|
||||
};
|
||||
er=4;
|
||||
conn.on("text",
|
||||
function(str) {
|
||||
try {
|
||||
mylog("收到的信息为0:" + str);
|
||||
this.readpack=1;//有包了
|
||||
|
||||
if (str === "dfw19770109") {
|
||||
|
||||
this.isserver = 1;
|
||||
webserver = this;
|
||||
// lists.remove(this);
|
||||
lists_all[this.ljid]=null;
|
||||
delete lists_all[this.ljid];
|
||||
this.ljid = 'tcp_' + 0;
|
||||
|
||||
|
||||
//this.sendText("webserver-dfw19770109");
|
||||
return;
|
||||
};
|
||||
|
||||
if (this == webserver) //处理完发来的
|
||||
{
|
||||
mylog("收到的信息为 从server来:" + str);
|
||||
serverrev_fromdo('server', 'id', str);
|
||||
} else
|
||||
|
||||
{
|
||||
if (webserver == null) {
|
||||
this.sendText("webserve-服务器未工作");
|
||||
} else {
|
||||
|
||||
mylog("转发给逻辑服务器:" + str);
|
||||
tcprev_todo('tcp', this, str);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
catch(err) {
|
||||
mylog2("text:" + err);
|
||||
}
|
||||
|
||||
//lists_all_http[response.ljid]
|
||||
// if (game1Ready && game2Ready) {
|
||||
// game2.sendText(str);
|
||||
// }
|
||||
//
|
||||
// conn.sendText(str)
|
||||
});
|
||||
conn.on("close",
|
||||
function(code, reason) {
|
||||
|
||||
if (conn.isserver==-1)
|
||||
{
|
||||
mylog2('连接已经满了收包:');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (this.isserver == 1) {
|
||||
webserver = null;
|
||||
mylog2("逻辑服务器关闭连接");
|
||||
} else {
|
||||
var index =0;// lists.remove(this);
|
||||
if (index > -1) {
|
||||
if (webserver) {
|
||||
//if (this.readpack!=0)
|
||||
{
|
||||
clientleave('tcp', this);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//this.socket=null;
|
||||
var i9=this.ljid;
|
||||
lists_all[i9]=null;
|
||||
|
||||
delete lists_all[i9];
|
||||
//conn=null;
|
||||
mylog("关闭连接"+i9);
|
||||
};
|
||||
} catch(err) {
|
||||
mylog2("close:" + err);
|
||||
}
|
||||
});
|
||||
|
||||
conn.on("error",
|
||||
function(code, reason) {
|
||||
// try {
|
||||
// if (this.isserver == 1) {
|
||||
// webserver = null;
|
||||
// mylog("逻辑服务器错误关闭连接");
|
||||
// } else {
|
||||
// var index = lists.remove(this);
|
||||
// if (index > -1) {
|
||||
// if (webserver) {
|
||||
// clientleave('tcp', this);
|
||||
// };
|
||||
// };
|
||||
|
||||
//this.socket=null;
|
||||
// var i9=this.ljid;
|
||||
// lists_all[i9]=null;
|
||||
|
||||
// delete lists_all[i9];
|
||||
//this=null;
|
||||
// mylog("异常关闭"+i9);
|
||||
// };
|
||||
// } catch(err) {
|
||||
// mylog2("error:" + err);
|
||||
// }
|
||||
});
|
||||
} catch(err) {
|
||||
mylog2("newsocket:" + err+" er:"+er);
|
||||
}
|
||||
|
||||
}).listen(tcpport);
|
||||
mylog("tcp建立完毕:" + tcpport);
|
||||
logmsg("tcp建立完毕:" + tcpport);
|
||||
list_server=tcpserver.connections;
|
||||
|
||||
};
|
||||
|
||||
function broadcast(server, msg) {
|
||||
try {
|
||||
server.connections.forEach(function(conn) {
|
||||
if (conn.readpack==1 && conn.isserver==0)
|
||||
|
||||
{conn.sendText(msg)};
|
||||
})
|
||||
} catch(err) {
|
||||
mylog2("broadcast:" + err);
|
||||
}
|
||||
} //广播
|
||||
|
||||
function checktimeout(server) {
|
||||
mylog("检测断线时间");
|
||||
var mytime=(new Date()).getTime();//当前时间
|
||||
try {
|
||||
server.forEach(function(conn) {
|
||||
if (conn.readpack==0 && conn.isserver==0)
|
||||
|
||||
{
|
||||
if (mytime-conn.contime>eylj)
|
||||
{ mylog2("Socket恶意链接");
|
||||
conn.close(1001);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
})
|
||||
} catch(err) {
|
||||
mylog2("checktimeout:" + err);
|
||||
}
|
||||
} //断线
|
||||
var maxsocketcount=0;
|
||||
var maxsocketcounttcp=0;
|
||||
function dotime() {
|
||||
try {
|
||||
mylog("Socket群发1111");
|
||||
if (webserver != null) {
|
||||
// return;
|
||||
}
|
||||
list_server=tcpserver.connections;
|
||||
var newDate=new Date();
|
||||
if (maxsocketcounttcp<tcpserver.connections.length){maxsocketcounttcp=tcpserver.connections.length};
|
||||
//if (maxsocketcount<lists.length){maxsocketcount=lists.length};
|
||||
logtitle(newDate.toLocaleDateString()+"/ "+tcpserver.connections.length+"/"+maxsocketcounttcp+" "+tcpinit);
|
||||
checktimeout(list_server);
|
||||
//logtitle(newDate.toLocaleDateString()+"/"+(lists.length)+"/"+tcpserver.connections.length+" "+maxsocketcount+"/"+maxsocketcounttcp+" "+tcpinit);
|
||||
/* var mytime=(new Date()).getTime();//当前时间
|
||||
|
||||
if (list_server.length > 0) {
|
||||
mylog("群发,检测时间");
|
||||
for (var i = 0; i < list_server.length; i++) {
|
||||
if (list_server[i].readpack==0 && list_server[i].isserver==0)
|
||||
{
|
||||
if (mytime-list_server[i].contime>eylj)
|
||||
{ mylog2("Socket恶意链接");
|
||||
list_server[i].close(1001);
|
||||
|
||||
}
|
||||
}
|
||||
// lists[i].sendText(i + ' :message server! ' + lists.length);
|
||||
}
|
||||
|
||||
} */
|
||||
} catch(err) {
|
||||
mylog2("dotime:" + err);
|
||||
}
|
||||
};
|
||||
if (tcpport > 0) {
|
||||
var interval = setInterval(dotime, 6000);
|
||||
};
|
||||
|
||||
// var lists = [];
|
||||
var list_server=[];
|
||||
var lists_all = {};
|
||||
|
||||
var lists_all_http = {};
|
||||
|
||||
|
||||
function min_now()
|
||||
{
|
||||
var date = new Date();
|
||||
var seperator1 = "-";
|
||||
var seperator2 = ":";
|
||||
var month = date.getMonth() + 1;
|
||||
var strDate = date.getDate();
|
||||
if (month >= 1 && month <= 9) {
|
||||
month = "0" + month;
|
||||
}
|
||||
if (strDate >= 0 && strDate <= 9) {
|
||||
strDate = "0" + strDate;
|
||||
}
|
||||
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
|
||||
+ " " + date.getHours() + seperator2 + date.getMinutes()
|
||||
+ seperator2 + date.getSeconds();
|
||||
return currentdate;
|
||||
}
|
||||
|
||||
var newDate = new Date();
|
||||
logmsg(newDate.toLocaleDateString());
|
||||
logmsg(min_now());
|
||||
|
||||
logmsg(nw.App.manifest.name);
|
||||
var path = require('path');
|
||||
var nwPath = process.execPath;
|
||||
var nwDir = path.dirname(nwPath);
|
||||
logmsg(nwDir);
|
||||
//server_heihu(5414,4321);
|
||||
//server_heihu(5415,4322);
|
||||
Reference in New Issue
Block a user