try
This commit is contained in:
parent
eb96185d8b
commit
6770fb3371
|
@ -38,8 +38,13 @@
|
||||||
},
|
},
|
||||||
send:function(id,message){
|
send:function(id,message){
|
||||||
if(clients[id]&&clients[id].owner==this){
|
if(clients[id]&&clients[id].owner==this){
|
||||||
|
try{
|
||||||
clients[id].send(message);
|
clients[id].send(message);
|
||||||
}
|
}
|
||||||
|
catch(e){
|
||||||
|
clients[id].close();
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
close:function(id){
|
close:function(id){
|
||||||
if(clients[id]&&clients[id].owner==this){
|
if(clients[id]&&clients[id].owner==this){
|
||||||
|
@ -49,12 +54,16 @@
|
||||||
};
|
};
|
||||||
var util={
|
var util={
|
||||||
sendl:function(){
|
sendl:function(){
|
||||||
if(this.closed) return;
|
|
||||||
var args=[];
|
var args=[];
|
||||||
for(var i=0;i<arguments.length;i++){
|
for(var i=0;i<arguments.length;i++){
|
||||||
args.push(arguments[i]);
|
args.push(arguments[i]);
|
||||||
}
|
}
|
||||||
|
try{
|
||||||
this.send(JSON.stringify(args));
|
this.send(JSON.stringify(args));
|
||||||
|
}
|
||||||
|
catch(e){
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
getid:function(){
|
getid:function(){
|
||||||
return (Math.floor(1000000000+9000000000*Math.random())).toString();
|
return (Math.floor(1000000000+9000000000*Math.random())).toString();
|
||||||
|
@ -96,17 +105,19 @@
|
||||||
clients[ws.wsid]=ws;
|
clients[ws.wsid]=ws;
|
||||||
ws.sendl('roomlist',util.getroomlist());
|
ws.sendl('roomlist',util.getroomlist());
|
||||||
ws.heartbeat=setInterval(function(){
|
ws.heartbeat=setInterval(function(){
|
||||||
if(ws.closed){
|
if(ws.beat){
|
||||||
clearInterval(ws.heartbeat);
|
|
||||||
}
|
|
||||||
else if(ws.beat){
|
|
||||||
ws.close();
|
ws.close();
|
||||||
clearInterval(ws.heartbeat);
|
clearInterval(ws.heartbeat);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ws.beat=true;
|
ws.beat=true;
|
||||||
|
try{
|
||||||
ws.send('heartbeat');
|
ws.send('heartbeat');
|
||||||
}
|
}
|
||||||
|
catch(e){
|
||||||
|
ws.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
},60000);
|
},60000);
|
||||||
ws.on('message',function(message){
|
ws.on('message',function(message){
|
||||||
if(message=='heartbeat'){
|
if(message=='heartbeat'){
|
||||||
|
@ -137,7 +148,6 @@
|
||||||
});
|
});
|
||||||
ws.on('close',function(){
|
ws.on('close',function(){
|
||||||
if(!clients[this.wsid]) return;
|
if(!clients[this.wsid]) return;
|
||||||
this.closed=true;
|
|
||||||
if(this.owner){
|
if(this.owner){
|
||||||
this.owner.sendl('onclose',this.wsid);
|
this.owner.sendl('onclose',this.wsid);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue