Commit 65e62503 by 冷斌

update

parent e627b141
...@@ -28,7 +28,11 @@ var LivePK={}; ...@@ -28,7 +28,11 @@ var LivePK={};
var LivePK_gift={}; var LivePK_gift={};
/* PK计时器 */ /* PK计时器 */
var LivePK_timer={}; var LivePK_timer={};
var LivePH_timer={};
var LivePKtime_timer={};
var LivePHtime_timer={};
var PKTimer = {};
var PHTimer = {};
// redis 链接 // redis 链接
var clientRedis = redis.createClient(config['REDISPORT'],config['REDISHOST']); var clientRedis = redis.createClient(config['REDISPORT'],config['REDISHOST']);
clientRedis.auth(config['REDISPASS']); clientRedis.auth(config['REDISPASS']);
...@@ -50,8 +54,8 @@ var io = socketio.listen(server,{ ...@@ -50,8 +54,8 @@ var io = socketio.listen(server,{
var sub = redis.createClient(config['REDISPORT'], config['REDISHOST'], { auth_pass: config['REDISPASS'] }); var sub = redis.createClient(config['REDISPORT'], config['REDISHOST'], { auth_pass: config['REDISPASS'] });
io.adapter(redisio({ pubClient: pub, subClient: sub })); */ io.adapter(redisio({ pubClient: pub, subClient: sub })); */
//setInterval(function(){ //setInterval(function(){
//global.gc(); //global.gc();
////console.log('GC done') ////console.log('GC done')
//}, 1000*30); //}, 1000*30);
io.on('connection', function(socket) { io.on('connection', function(socket) {
...@@ -107,6 +111,7 @@ io.on('connection', function(socket) { ...@@ -107,6 +111,7 @@ io.on('connection', function(socket) {
socket.join(data.roomnum); socket.join(data.roomnum);
sockets[userid] = socket; sockets[userid] = socket;
socket.emit('conn',['ok']); socket.emit('conn',['ok']);
//socket.emit('conn1',['ok1']);
/* 重连时 处理PK */ /* 重连时 处理PK */
if(socket.roomnum==socket.uid){ if(socket.roomnum==socket.uid){
...@@ -252,6 +257,7 @@ io.on('connection', function(socket) { ...@@ -252,6 +257,7 @@ io.on('connection', function(socket) {
var gifToken = dataObj['msg'][0]['ct']; var gifToken = dataObj['msg'][0]['ct'];
clientRedis.get(gifToken,function(error,res){ clientRedis.get(gifToken,function(error,res){
if(!error&&res != null){ if(!error&&res != null){
//console.log(res);
var resObj = evalJson(res); var resObj = evalJson(res);
dataObj['msg'][0]['ct'] = resObj; dataObj['msg'][0]['ct'] = resObj;
var pkuid=LivePK[socket.roomnum]; var pkuid=LivePK[socket.roomnum];
...@@ -263,7 +269,8 @@ io.on('connection', function(socket) { ...@@ -263,7 +269,8 @@ io.on('connection', function(socket) {
if(pkuid && pkuid>0){ if(pkuid && pkuid>0){
ifpk='1'; ifpk='1';
var total=Number(resObj.totalcoin); var total=Number(resObj.totalcoin);
LivePK_gift[socket.roomnum]+=total; //LivePK_gift[socket.roomnum]+=total;
LivePK_gift[socket.roomnum]=Number(LivePK_gift[socket.roomnum])+total;
clientRedis.hincrby('LivePK_gift',socket.roomnum,total); clientRedis.hincrby('LivePK_gift',socket.roomnum,total);
pkuid1=''+socket.roomnum; pkuid1=''+socket.roomnum;
...@@ -277,7 +284,7 @@ io.on('connection', function(socket) { ...@@ -277,7 +284,7 @@ io.on('connection', function(socket) {
dataObj['msg'][0]['pkuid2']=pkuid2; dataObj['msg'][0]['pkuid2']=pkuid2;
dataObj['msg'][0]['pktotal1']=pktotal1; dataObj['msg'][0]['pktotal1']=pktotal1;
dataObj['msg'][0]['pktotal2']=pktotal2; dataObj['msg'][0]['pktotal2']=pktotal2;
//console.log('sendgift'+socket.roomnum);
io.sockets.in(socket.roomnum).emit('broadcastingListen',[JSON.stringify(dataObj)]); io.sockets.in(socket.roomnum).emit('broadcastingListen',[JSON.stringify(dataObj)]);
if(pkuid>0){ if(pkuid>0){
io.sockets.in(pkuid).emit('broadcastingListen',[JSON.stringify(dataObj)]); io.sockets.in(pkuid).emit('broadcastingListen',[JSON.stringify(dataObj)]);
...@@ -548,6 +555,26 @@ io.on('connection', function(socket) { ...@@ -548,6 +555,26 @@ io.on('connection', function(socket) {
process_msg(io,pkuid,JSON.stringify(data_obj_pk)); process_msg(io,pkuid,JSON.stringify(data_obj_pk));
}else if(action=='5'){ }else if(action=='5'){
if(LivePKtime_timer[socket.uid]){
clearInterval(LivePKtime_timer[socket.uid]);
LivePKtime_timer[socket.uid]=null;
}
if(LivePHtime_timer[socket.uid]){
clearInterval(LivePHtime_timer[socket.uid]);
LivePHtime_timer[socket.uid]=null;
}
if(LivePKtime_timer[pkuid]){
clearInterval(LivePKtime_timer[pkuid]);
LivePKtime_timer[pkuid]=null;
}
if(LivePHtime_timer[pkuid]){
clearInterval(LivePHtime_timer[pkuid]);
LivePHtime_timer[pkuid]=null;
}
/* 清除连麦信息 */ /* 清除连麦信息 */
endLiveConnect(io,socket.uid); endLiveConnect(io,socket.uid);
}else{ }else{
...@@ -585,6 +612,9 @@ io.on('connection', function(socket) { ...@@ -585,6 +612,9 @@ io.on('connection', function(socket) {
clientRedis.hset('LivePK_gift',socket.uid,0); clientRedis.hset('LivePK_gift',socket.uid,0);
clientRedis.hset('LivePK_gift',pkuid,0); clientRedis.hset('LivePK_gift',pkuid,0);
var time=Math.floor( (new Date()).getTime()/1000);
var phtime = time+7*60;//PK结束、开始惩罚时间
var phetime = phtime+1.5*60;//惩罚结束时间
/* 发送连麦成功信息 */ /* 发送连麦成功信息 */
/* 当前房间 */ /* 当前房间 */
var data_obj={ var data_obj={
...@@ -595,7 +625,9 @@ io.on('connection', function(socket) { ...@@ -595,7 +625,9 @@ io.on('connection', function(socket) {
"msgtype":"10", "msgtype":"10",
"pkuid":""+pkuid, "pkuid":""+pkuid,
"uid":""+socket.uid, "uid":""+socket.uid,
"uname":""+socket.nicename "uname":""+socket.nicename,
"time":""+time,//当前时间
"pktime":""+phtime//pk结束时间
} }
], ],
"retcode":"000000", "retcode":"000000",
...@@ -612,7 +644,9 @@ io.on('connection', function(socket) { ...@@ -612,7 +644,9 @@ io.on('connection', function(socket) {
"msgtype":"10", "msgtype":"10",
"pkuid":""+socket.uid, "pkuid":""+socket.uid,
"uid":""+socket.uid, "uid":""+socket.uid,
"uname":""+socket.nicename "uname":""+socket.nicename,
"time":""+time,//当前时间
"pktime":""+phtime//pk结束时间
} }
], ],
"retcode":"000000", "retcode":"000000",
...@@ -624,18 +658,112 @@ io.on('connection', function(socket) { ...@@ -624,18 +658,112 @@ io.on('connection', function(socket) {
LivePK_timer[socket.uid]=null; LivePK_timer[socket.uid]=null;
var time=Math.floor( (new Date()).getTime()/1000); clearTimeout(LivePH_timer[socket.uid]);
LivePH_timer[socket.uid]=null;
clearInterval(LivePKtime_timer[socket.uid]);
LivePKtime_timer[socket.uid]=null;
clearInterval(LivePHtime_timer[socket.uid]);
LivePHtime_timer[socket.uid]=null;
//console.log('LivePK_timer_'+socket.uid+'___'+pkuid); //console.log('LivePK_timer_'+socket.uid+'___'+pkuid);
//console.log('LivePK_timer'); //console.log('LivePK_timer');
//console.log(time); //console.log(time);
//当前主播和发起主播的PK时间和惩罚时间
clientRedis.hset('LivePK_timer',socket.uid,time); clientRedis.hset('LivePK_timer',socket.uid,time);
clientRedis.hset('LivePK_timer',pkuid,time);
clientRedis.hset('LivePH_timer',socket.uid,phtime);
clientRedis.hset('LivePH_timer',pkuid,phtime);
//惩罚定时器
LivePH_timer[socket.uid]=setTimeout(function() {//定时设置惩罚时间为0
//惩罚结束时清除PK礼物信息1-07修改
LivePK_gift[socket.uid]=0;
LivePK_gift[pkuid]=0;
clientRedis.hset('LivePK_gift',socket.uid,0);
clientRedis.hset('LivePK_gift',pkuid,0);
clientRedis.hset('LivePH_timer',socket.uid,0);
if(LivePH_timer[socket.uid]){
clearTimeout(LivePH_timer[socket.uid]);
LivePH_timer[socket.uid]=null;
}
}, 7.5*60*1000);//pk惩罚结束时间
LivePKtime_timer[socket.uid]=setInterval(function() {//定时发送结果
var leftTime = phtime - Math.floor( (new Date()).getTime()/1000); //计算剩余的毫秒数
var minutes = parseInt(leftTime / 60 % 60, 10);//计算剩余的分钟
var seconds = parseInt(leftTime % 60, 10);//计算剩余的秒数
minutes = checkTime1(minutes);
seconds = checkTime1(seconds);
if (minutes >= 0 || seconds >= 0) PKTimer = {'status':'ok','min':minutes,'sec':seconds};
if (minutes <= 0 && seconds <= 0) {
clearInterval(LivePKtime_timer[socket.uid]);
LivePKtime_timer[socket.uid] = null;
PKTimer = {'status':'end','min':'00','sec':'00'};
}
// io.sockets.in(socket.roomnum).emit("pktime", [PKTimer]);
// io.sockets.in(pkuid).emit("pktime", [PKTimer]);
//process_msg(io,socket.roomnum,JSON.stringify(PKTimer));
//process_msg(io,pkuid,JSON.stringify(PKTimer));
//sockets[uid].emit('pktime',[PKTimer]);
}, 1000);
LivePK_timer[socket.uid]=setTimeout(function() {//定时发送结果 LivePK_timer[socket.uid]=setTimeout(function() {//定时发送结果
LivePHtime_timer[socket.uid]=setInterval(function() {//定时发送结果
var leftTime = phetime - Math.floor( (new Date()).getTime()/1000); //计算剩余的毫秒数
var minutes = parseInt(leftTime / 60 % 60, 10);//计算剩余的分钟
var seconds = parseInt(leftTime % 60, 10);//计算剩余的秒数
minutes = checkTime1(minutes);
seconds = checkTime1(seconds);
if (minutes >= 0 || seconds >= 0) PHTimer = {'status':'ok','min':minutes,'sec':seconds};
if (minutes <= 0 && seconds <= 0) {
clearInterval(LivePHtime_timer[socket.uid]);
LivePHtime_timer[socket.uid] = null;
PHTimer = {'status':'end','min':'00','sec':'00'};
}
// io.sockets.in(socket.roomnum).emit("phtime", [PHTimer]);
// io.sockets.in(pkuid).emit("phtime", [PHTimer]);
//io.sockets.in(data['roomnum']).emit("broadcastingListen", ['stopplay']);
//process_msg(io,socket.roomnum,JSON.stringify(PHTimer));
//process_msg(io,pkuid,JSON.stringify(PHTimer));
// sockets[pkuid].emit('phtime',[PHTimer]);
// sockets[uid].emit('phtime',[PHTimer]);
}, 1000);
endLivePk(io,socket.uid,0); endLivePk(io,socket.uid,0);
}, 7*60*1000); }, 5*60*1000);
//5*60*1000 //5*60*1000
}else if(action=='5'){ }else if(action=='5'){
if(LivePKtime_timer[socket.uid]){
clearInterval(LivePKtime_timer[socket.uid]);
LivePKtime_timer[socket.uid]=null;
}
if(LivePHtime_timer[socket.uid]){
clearInterval(LivePHtime_timer[socket.uid]);
LivePHtime_timer[socket.uid]=null;
}
if(LivePKtime_timer[pkuid]){
clearInterval(LivePKtime_timer[pkuid]);
LivePKtime_timer[pkuid]=null;
}
if(LivePHtime_timer[pkuid]){
clearInterval(LivePHtime_timer[pkuid]);
LivePHtime_timer[pkuid]=null;
}
/* 清除PK信息 */ /* 清除PK信息 */
endLivePk(io,socket.uid,1); endLivePk(io,socket.uid,1);
}else{ }else{
...@@ -818,6 +946,7 @@ io.on('connection', function(socket) { ...@@ -818,6 +946,7 @@ io.on('connection', function(socket) {
//资源释放 //资源释放
socket.on('disconnect', function() { socket.on('disconnect', function() {
console.log('disconnect:'+socket.uid+' '+socket.token+' '+socket.roomnum);
/* numscount--; /* numscount--;
if(numscount<0){ if(numscount<0){
numscount=0; numscount=0;
...@@ -1057,7 +1186,16 @@ function endLivePk(io,uid,type){ ...@@ -1057,7 +1186,16 @@ function endLivePk(io,uid,type){
clearTimeout(LivePK_timer[pkuid]); clearTimeout(LivePK_timer[pkuid]);
LivePK_timer[pkuid]=null; LivePK_timer[pkuid]=null;
} }
//清除计时
// if(LivePKtime_timer[uid]){
// clearInterval(LivePKtime_timer[uid]);
// LivePKtime_timer[uid]=null;
// }
// if(LivePKtime_timer[pkuid]){
// clearInterval(LivePKtime_timer[pkuid]);
// LivePKtime_timer[pkuid]=null;
// }
//clearInterval(LivePKtime_timer[socket.uid]);
if(type==1){ if(type==1){
win_uid=pkuid; win_uid=pkuid;
}else if(end_gift_uid > end_gift_pkuid){ }else if(end_gift_uid > end_gift_pkuid){
...@@ -1070,8 +1208,8 @@ function endLivePk(io,uid,type){ ...@@ -1070,8 +1208,8 @@ function endLivePk(io,uid,type){
LivePK[uid]=0; LivePK[uid]=0;
LivePK[pkuid]=0; LivePK[pkuid]=0;
LivePK_gift[uid]=0; // LivePK_gift[uid]=0;
LivePK_gift[pkuid]=0; // LivePK_gift[pkuid]=0;
// console.log('endLivePk'); // console.log('endLivePk');
// console.log(type); // console.log(type);
...@@ -1085,9 +1223,11 @@ function endLivePk(io,uid,type){ ...@@ -1085,9 +1223,11 @@ function endLivePk(io,uid,type){
clientRedis.hset('LivePK',uid,0); clientRedis.hset('LivePK',uid,0);
clientRedis.hset('LivePK',pkuid,0); clientRedis.hset('LivePK',pkuid,0);
clientRedis.hset('LivePK_gift',uid,0); // clientRedis.hset('LivePK_gift',uid,0);
clientRedis.hset('LivePK_gift',pkuid,0); // clientRedis.hset('LivePK_gift',pkuid,0);
var time=Math.floor( (new Date()).getTime()/1000);
var phetime = time+1.5*60;//惩罚结束时间
//var phetime = phtime+0.5*60;//惩罚结束时间
var data_obj={ var data_obj={
"msg":[ "msg":[
{ {
...@@ -1096,7 +1236,9 @@ function endLivePk(io,uid,type){ ...@@ -1096,7 +1236,9 @@ function endLivePk(io,uid,type){
"msgtype":"10", "msgtype":"10",
"win_uid":""+win_uid, "win_uid":""+win_uid,
"uid":""+uid, "uid":""+uid,
"uname":"" "uname":"",
"time":""+time,
"phetime":""+phetime
} }
], ],
"retcode":"000000", "retcode":"000000",
...@@ -1130,3 +1272,10 @@ function setSign(obj) {//排序的函数 ...@@ -1130,3 +1272,10 @@ function setSign(obj) {//排序的函数
var sign=md5(str); var sign=md5(str);
return sign; return sign;
} }
//将0-9的数字前面加上0,例1变为01,计时用
function checkTime1(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
...@@ -1059,12 +1059,13 @@ class Api_Live extends PhalApi_Api { ...@@ -1059,12 +1059,13 @@ class Api_Live extends PhalApi_Api {
/* 主播连麦 */ /* 主播连麦 */
$pkinfo=array( $pkinfo=array(
'pkuid'=>'0', 'pkuid' => '0',
'pkpull'=>'0', 'pkpull' => '0',
'ifpk'=>'0', 'ifpk' => '0',
'pk_time'=>'0', 'pk_time' => '0',
'pk_gift_liveuid'=>'0', 'ph_time' => '0',
'pk_gift_pkuid'=>'0', 'pk_gift_liveuid' => '0',
'pk_gift_pkuid' => '0',
); );
$pkuid=DI()->redis -> hGet('LiveConnect',$liveuid); $pkuid=DI()->redis -> hGet('LiveConnect',$liveuid);
// file_put_contents('./LiveConnect.txt',date('Y-m-d H:i:s').' 提交参数信息 pkuid:'.json_encode($pkuid)."\r\n",FILE_APPEND); // file_put_contents('./LiveConnect.txt',date('Y-m-d H:i:s').' 提交参数信息 pkuid:'.json_encode($pkuid)."\r\n",FILE_APPEND);
...@@ -1074,6 +1075,17 @@ class Api_Live extends PhalApi_Api { ...@@ -1074,6 +1075,17 @@ class Api_Live extends PhalApi_Api {
$pkpull=DI()->redis -> hGet('LiveConnect_pull',$pkuid); $pkpull=DI()->redis -> hGet('LiveConnect_pull',$pkuid);
// file_put_contents('./LiveConnect.txt',date('Y-m-d H:i:s').' 提交参数信息 pkpull:'.json_encode($pkpull)."\r\n",FILE_APPEND); // file_put_contents('./LiveConnect.txt',date('Y-m-d H:i:s').' 提交参数信息 pkpull:'.json_encode($pkpull)."\r\n",FILE_APPEND);
$pkinfo['pkpull']=$this->getPullWithSign($pkpull); $pkinfo['pkpull']=$this->getPullWithSign($pkpull);
$ph_time = DI()->redis->hGet('LivePH_timer', $liveuid);
$nowtime = time();
if (!$ph_time) {
//开始惩罚时间
$ph_time = DI()->redis->hGet('LivePH_timer', $pkuid);
}
if ($ph_time && $ph_time > 0 && $ph_time < $nowtime) {
$chb = 2.5 * 60 - ($nowtime - $ph_time);
$pkinfo['ph_time'] = (string) $chb; //惩罚剩余时间
}
$ifpk=DI()->redis -> hGet('LivePK',$liveuid); $ifpk=DI()->redis -> hGet('LivePK',$liveuid);
if($ifpk){ if($ifpk){
$pkinfo['ifpk']='1'; $pkinfo['ifpk']='1';
...@@ -1081,7 +1093,7 @@ class Api_Live extends PhalApi_Api { ...@@ -1081,7 +1093,7 @@ class Api_Live extends PhalApi_Api {
if(!$pk_time){ if(!$pk_time){
$pk_time=DI()->redis -> hGet('LivePK_timer',$pkuid); $pk_time=DI()->redis -> hGet('LivePK_timer',$pkuid);
} }
$nowtime=time(); // $nowtime=time();
if($pk_time && $pk_time >0 && $pk_time< $nowtime){ if($pk_time && $pk_time >0 && $pk_time< $nowtime){
$cha=7*60 - ($nowtime - $pk_time); $cha=7*60 - ($nowtime - $pk_time);
$pkinfo['pk_time']=(string)$cha; $pkinfo['pk_time']=(string)$cha;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment