Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
haishi
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
冷斌
haishi
Commits
65e62503
Commit
65e62503
authored
Apr 29, 2020
by
冷斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
e627b141
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1019 additions
and
858 deletions
+1019
-858
LiveNewIM/s1.js
+1000
-851
api/Appapi/Api/Live.php
+19
-7
No files found.
LiveNewIM/s1.js
View file @
65e62503
//引入http模块
var
socketio
=
require
(
'socket.io'
),
fs
=
require
(
'fs'
),
http
=
require
(
'http'
),
domain
=
require
(
'domain'
),
redis
=
require
(
'redis'
),
fs
=
require
(
'fs'
),
http
=
require
(
'http'
),
domain
=
require
(
'domain'
),
redis
=
require
(
'redis'
),
redisio
=
require
(
'socket.io-redis'
),
request
=
require
(
'request'
),
md5
=
require
(
'md5-node'
),
...
...
@@ -12,7 +12,7 @@ var socketio = require('socket.io'),
var
d
=
domain
.
create
();
d
.
on
(
"error"
,
function
(
err
)
{
//console.log(err);
//console.log(err);
});
//var numscount=0;// 在线人数统计
...
...
@@ -28,85 +28,90 @@ var LivePK={};
var
LivePK_gift
=
{};
/* PK计时器 */
var
LivePK_timer
=
{};
var
LivePH_timer
=
{};
var
LivePKtime_timer
=
{};
var
LivePHtime_timer
=
{};
var
PKTimer
=
{};
var
PHTimer
=
{};
// redis 链接
var
clientRedis
=
redis
.
createClient
(
config
[
'REDISPORT'
],
config
[
'REDISHOST'
]);
clientRedis
.
auth
(
config
[
'REDISPASS'
]);
var
server
=
http
.
createServer
(
function
(
req
,
res
)
{
res
.
writeHead
(
200
,
{
'Content-type'
:
'text/html;charset=utf-8'
});
//res.write("人数: " + numscount );
res
.
end
();
res
.
writeHead
(
200
,
{
'Content-type'
:
'text/html;charset=utf-8'
});
//res.write("人数: " + numscount );
res
.
end
();
}).
listen
(
config
[
'socket_port'
],
function
()
{
////console.log('服务开启19965');
////console.log('服务开启19965');
});
var
io
=
socketio
.
listen
(
server
,{
pingTimeout
:
60000
,
pingInterval
:
25000
pingTimeout
:
60000
,
pingInterval
:
25000
});
/* var pub = 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 })); */
//setInterval(function(){
//global.gc();
////console.log('GC done')
//global.gc();
////console.log('GC done')
//}, 1000*30);
io
.
on
(
'connection'
,
function
(
socket
)
{
////console.log('连接成功');
//numscount++;
var
interval
;
//进入房间
socket
.
on
(
'conn'
,
function
(
data
)
{
if
(
!
data
||
!
data
.
token
){
return
!
1
;
}
userid
=
data
.
uid
;
old_socket
=
sockets
[
userid
];
if
(
old_socket
&&
old_socket
!=
socket
)
{
if
(
data
.
uid
==
data
.
roomnum
&&
data
.
stream
==
old_socket
.
stream
){
old_socket
.
reusing
=
1
;
////console.log("重用");
}
else
if
(
data
.
uid
==
data
.
roomnum
&&
data
.
stream
!=
old_socket
.
stream
){
var
data_str
=
'{"retmsg":"ok","retcode":"000000","msg":[{"msgtype":"1","_method_":"StartEndLive","action":"19","ct":"直播关闭"}]}'
;
old_socket
.
emit
(
'broadcastingListen'
,[
data_str
]);
}
old_socket
.
disconnect
()
}
clientRedis
.
get
(
data
.
token
,
function
(
error
,
res
){
if
(
error
){
return
;
}
else
if
(
res
==
null
){
////console.log("[获取token失败]"+data.uid);
}
else
{
if
(
res
!=
null
){
var
userInfo
=
evalJson
(
res
);
if
(
userInfo
[
'id'
]
==
data
.
uid
){
////console.log("[初始化验证成功]--"+data.uid+"---"+data.roomnum+'---'+data.stream);
//获取验证token
socket
.
token
=
data
.
token
;
socket
.
roomnum
=
data
.
roomnum
;
socket
.
stream
=
data
.
stream
;
socket
.
nicename
=
userInfo
[
'user_nicename'
];
socket
.
level
=
userInfo
[
'level'
];
socket
.
avatar
=
userInfo
[
'avatar'
];
socket
.
sign
=
Number
(
userInfo
[
'sign'
]);
socket
.
usertype
=
parseInt
(
userInfo
[
'usertype'
]);
socket
.
uid
=
data
.
uid
;
socket
.
reusing
=
0
;
socket
.
join
(
data
.
roomnum
);
sockets
[
userid
]
=
socket
;
socket
.
emit
(
'conn'
,[
'ok'
]);
////console.log('连接成功');
//numscount++;
var
interval
;
//进入房间
socket
.
on
(
'conn'
,
function
(
data
)
{
if
(
!
data
||
!
data
.
token
){
return
!
1
;
}
userid
=
data
.
uid
;
old_socket
=
sockets
[
userid
];
if
(
old_socket
&&
old_socket
!=
socket
)
{
if
(
data
.
uid
==
data
.
roomnum
&&
data
.
stream
==
old_socket
.
stream
){
old_socket
.
reusing
=
1
;
////console.log("重用");
}
else
if
(
data
.
uid
==
data
.
roomnum
&&
data
.
stream
!=
old_socket
.
stream
){
var
data_str
=
'{"retmsg":"ok","retcode":"000000","msg":[{"msgtype":"1","_method_":"StartEndLive","action":"19","ct":"直播关闭"}]}'
;
old_socket
.
emit
(
'broadcastingListen'
,[
data_str
]);
}
old_socket
.
disconnect
()
}
clientRedis
.
get
(
data
.
token
,
function
(
error
,
res
){
if
(
error
){
return
;
}
else
if
(
res
==
null
){
////console.log("[获取token失败]"+data.uid);
}
else
{
if
(
res
!=
null
){
var
userInfo
=
evalJson
(
res
);
if
(
userInfo
[
'id'
]
==
data
.
uid
){
////console.log("[初始化验证成功]--"+data.uid+"---"+data.roomnum+'---'+data.stream);
//获取验证token
socket
.
token
=
data
.
token
;
socket
.
roomnum
=
data
.
roomnum
;
socket
.
stream
=
data
.
stream
;
socket
.
nicename
=
userInfo
[
'user_nicename'
];
socket
.
level
=
userInfo
[
'level'
];
socket
.
avatar
=
userInfo
[
'avatar'
];
socket
.
sign
=
Number
(
userInfo
[
'sign'
]);
socket
.
usertype
=
parseInt
(
userInfo
[
'usertype'
]);
socket
.
uid
=
data
.
uid
;
socket
.
reusing
=
0
;
socket
.
join
(
data
.
roomnum
);
sockets
[
userid
]
=
socket
;
socket
.
emit
(
'conn'
,[
'ok'
]);
//socket.emit('conn1',['ok1']);
/* 重连时 处理PK */
if
(
socket
.
roomnum
==
socket
.
uid
){
...
...
@@ -139,7 +144,7 @@ io.on('connection', function(socket) {
})
}
if
(
socket
.
roomnum
!=
socket
.
uid
&&
socket
.
uid
>
0
){
if
(
socket
.
roomnum
!=
socket
.
uid
&&
socket
.
uid
>
0
){
/* 处理有时 无座驾信息会崩溃的问题 */
var
car_id
=
'0'
;
var
car_swf
=
''
;
...
...
@@ -161,813 +166,937 @@ io.on('connection', function(socket) {
}
}
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"SendMsg"
,
"action"
:
"0"
,
"ct"
:{
"id"
:
''
+
userInfo
[
'id'
],
"user_nicename"
:
''
+
userInfo
[
'user_nicename'
],
"avatar"
:
userInfo
[
'avatar'
],
"avatar_thumb"
:
userInfo
[
'avatar_thumb'
],
"level"
:
''
+
userInfo
[
'level'
],
"usertype"
:
''
+
userInfo
[
'usertype'
],
"vip_type"
:
''
+
userInfo
[
'vip'
][
'type'
],
"guard_type"
:
''
+
userInfo
[
'guard_type'
],
"liangname"
:
''
+
userInfo
[
'liang'
][
'name'
],
"car_id"
:
''
+
car_id
,
"car_swf"
:
''
+
car_swf
,
"car_swftime"
:
''
+
car_swftime
,
"car_words"
:
''
+
car_words
},
"msgtype"
:
"0"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
if
(
socket
.
stream
){
clientRedis
.
zadd
(
'user_'
+
socket
.
stream
,
socket
.
sign
,
userInfo
[
'id'
]);
}
}
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"SendMsg"
,
"action"
:
"0"
,
"ct"
:{
"id"
:
''
+
userInfo
[
'id'
],
"user_nicename"
:
''
+
userInfo
[
'user_nicename'
],
"avatar"
:
userInfo
[
'avatar'
],
"avatar_thumb"
:
userInfo
[
'avatar_thumb'
],
"level"
:
''
+
userInfo
[
'level'
],
"usertype"
:
''
+
userInfo
[
'usertype'
],
"vip_type"
:
''
+
userInfo
[
'vip'
][
'type'
],
"guard_type"
:
''
+
userInfo
[
'guard_type'
],
"liangname"
:
''
+
userInfo
[
'liang'
][
'name'
],
"car_id"
:
''
+
car_id
,
"car_swf"
:
''
+
car_swf
,
"car_swftime"
:
''
+
car_swftime
,
"car_words"
:
''
+
car_words
},
"msgtype"
:
"0"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
if
(
socket
.
stream
){
clientRedis
.
zadd
(
'user_'
+
socket
.
stream
,
socket
.
sign
,
userInfo
[
'id'
]);
}
}
sendSystemMsg
(
socket
,
"直播内容包含任何低俗、暴露和涉黄内容,账号会被封禁;安全部门会24小时巡查哦~"
);
return
;
}
else
{
socket
.
disconnect
();
}
}
}
socket
.
emit
(
'conn'
,[
'no'
]);
});
});
socket
.
on
(
'broadcast'
,
function
(
data
){
////console.log(data);
if
(
socket
.
token
!=
undefined
){
var
dataObj
=
typeof
data
==
'object'
?
data
:
evalJson
(
data
);
var
msg
=
dataObj
[
'msg'
][
0
];
var
token
=
dataObj
[
'token'
];
var
method
=
msg
[
'_method_'
];
var
action
=
msg
[
'action'
];
var
data_str
=
typeof
data
==
'object'
?
JSON
.
stringify
(
data
):
data
;
switch
(
method
){
case
'SendMsg'
:{
//聊天
clientRedis
.
hget
(
"super"
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
!=
null
){
var
data_str2
=
{
"msg"
:[
{
"_method_"
:
"SystemNot"
,
"action"
:
"1"
,
"ct"
:
''
+
dataObj
[
'msg'
][
0
][
'ct'
],
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_str2
));
}
else
{
clientRedis
.
hget
(
socket
.
roomnum
+
"shutup"
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
!=
null
){
var
newData
=
dataObj
;
newData
[
'retcode'
]
=
'409002'
;
socket
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
newData
)]);
}
else
{
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
});
}
});
break
;
}
case
'SendGift'
:{
//送礼物
var
gifToken
=
dataObj
[
'msg'
][
0
][
'ct'
];
clientRedis
.
get
(
gifToken
,
function
(
error
,
res
){
if
(
!
error
&&
res
!=
null
){
var
resObj
=
evalJson
(
res
);
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
var
pkuid
=
LivePK
[
socket
.
roomnum
];
var
ifpk
=
'0'
,
pkuid1
=
'0'
,
pkuid2
=
'0'
,
pktotal1
=
'0'
,
pktotal2
=
'0'
;
if
(
pkuid
&&
pkuid
>
0
){
ifpk
=
'1'
;
var
total
=
Number
(
resObj
.
totalcoin
);
LivePK_gift
[
socket
.
roomnum
]
+=
total
;
clientRedis
.
hincrby
(
'LivePK_gift'
,
socket
.
roomnum
,
total
);
pkuid1
=
''
+
socket
.
roomnum
;
pkuid2
=
''
+
pkuid
;
pktotal1
=
''
+
LivePK_gift
[
socket
.
roomnum
];
pktotal2
=
''
+
LivePK_gift
[
pkuid
];
}
else
{
socket
.
disconnect
();
}
}
}
}
dataObj
[
'msg'
][
0
][
'ifpk'
]
=
ifpk
;
dataObj
[
'msg'
][
0
][
'pkuid1'
]
=
pkuid1
;
dataObj
[
'msg'
][
0
][
'pkuid2'
]
=
pkuid2
;
dataObj
[
'msg'
][
0
][
'pktotal1'
]
=
pktotal1
;
dataObj
[
'msg'
][
0
][
'pktotal2'
]
=
pktotal2
;
io
.
sockets
.
in
(
socket
.
roomnum
).
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
dataObj
)]);
if
(
pkuid
>
0
){
io
.
sockets
.
in
(
pkuid
).
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
dataObj
)]);
}
socket
.
emit
(
'conn'
,[
'no'
]);
});
/* 幸运中奖 */
if
(
resObj
.
isluck
==
1
&&
resObj
.
isluckall
==
1
){
var
data_luck
=
{
"msg"
:[
{
"_method_"
:
"luckWin"
,
"action"
:
"1"
,
"uid"
:
''
+
msg
.
uid
,
"uname"
:
''
+
msg
.
uname
,
"uhead"
:
''
+
msg
.
uhead
,
"giftid"
:
''
+
resObj
.
giftid
,
"giftname"
:
''
+
resObj
.
giftname
,
"lucktimes"
:
''
+
resObj
.
lucktimes
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_luck
)]);
}
/* 幸运中奖 */
/* 奖池升级 */
if
(
resObj
.
isup
==
1
){
var
data_up
=
{
"msg"
:[
{
"_method_"
:
"jackpotUp"
,
"action"
:
"1"
,
"uplevel"
:
''
+
resObj
.
uplevel
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_up
)]);
}
/* 奖池升级 */
/* 奖池中奖 */
if
(
resObj
.
iswin
==
1
){
var
data_win
=
{
"msg"
:[
{
"_method_"
:
"jackpotWin"
,
"action"
:
"1"
,
"uid"
:
''
+
msg
.
uid
,
"uname"
:
''
+
msg
.
uname
,
"uhead"
:
''
+
msg
.
uhead
,
"wincoin"
:
''
+
resObj
.
wincoin
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_win
)]);
var
data_up
=
{
"msg"
:[
{
"_method_"
:
"jackpotUp"
,
"action"
:
"1"
,
"uplevel"
:
'0'
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_up
)]);
}
/* 奖池中奖 */
clientRedis
.
del
(
gifToken
);
}
});
break
;
}
case
'SendBarrage'
:{
//弹幕
var
barragetoken
=
dataObj
[
'msg'
][
0
][
'ct'
];
clientRedis
.
get
(
barragetoken
,
function
(
error
,
res
){
if
(
!
error
&&
res
!=
null
){
var
resObj
=
evalJson
(
res
);
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
var
data_str
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
clientRedis
.
del
(
barragetoken
);
}
});
break
;
}
case
'ConnectVideo'
:{
//连麦
//1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.发起者断开连麦;6:主播断开连麦;7:主播正忙碌 8:主播无响应
if
(
action
==
'5'
||
action
==
'6'
){
clientRedis
.
hget
(
'ShowVideo'
,
socket
.
roomnum
,
function
(
error
,
res
){
if
(
error
){
return
!
1
;
}
if
(
!
res
){
return
!
1
;
}
var
res_j
=
JSON
.
parse
(
res
);
if
(
socket
.
uid
==
res_j
[
'uid'
]
||
socket
.
uid
==
socket
.
roomnum
){
clientRedis
.
hdel
(
'ShowVideo'
,
socket
.
roomnum
);
});
socket
.
on
(
'broadcast'
,
function
(
data
){
////console.log(data);
if
(
socket
.
token
!=
undefined
){
var
dataObj
=
typeof
data
==
'object'
?
data
:
evalJson
(
data
);
var
msg
=
dataObj
[
'msg'
][
0
];
var
token
=
dataObj
[
'token'
];
var
method
=
msg
[
'_method_'
];
var
action
=
msg
[
'action'
];
var
data_str
=
typeof
data
==
'object'
?
JSON
.
stringify
(
data
):
data
;
switch
(
method
){
case
'SendMsg'
:{
//聊天
clientRedis
.
hget
(
"super"
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
!=
null
){
var
data_str2
=
{
"msg"
:[
{
"_method_"
:
"SystemNot"
,
"action"
:
"1"
,
"ct"
:
''
+
dataObj
[
'msg'
][
0
][
'ct'
],
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_str2
));
}
else
{
clientRedis
.
hget
(
socket
.
roomnum
+
"shutup"
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
!=
null
){
var
newData
=
dataObj
;
newData
[
'retcode'
]
=
'409002'
;
socket
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
newData
)]);
}
else
{
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
});
}
else
{
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'light'
:{
//点亮
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'changeLive'
:{
//切换房间收费
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'updateVotes'
:{
//更新映票
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'CloseLive'
:{
//关闭直播
if
(
socket
.
usertype
==
50
){
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'KickUser'
:{
//踢人
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'ShutUpUser'
:{
//禁言
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'stopLive'
:{
//超管关播
clientRedis
.
hget
(
"super"
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
!=
null
){
process_msg
(
io
,
socket
.
roomnum
,
'stopplay'
);
}
});
break
;
}
case
'ResumeUser'
:{
//恢复发言
if
(
socket
.
usertype
==
50
||
socket
.
usertype
==
40
){
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'setAdmin'
:{
//设置/取消管理员
if
(
socket
.
usertype
==
50
){
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'StartEndLive'
:{
if
(
socket
.
usertype
==
50
){
socket
.
broadcast
.
to
(
socket
.
roomnum
).
emit
(
'broadcastingListen'
,[
data_str
]);
}
else
{
clientRedis
.
get
(
"LiveAuthority"
+
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
parseInt
(
res
)
==
5
||
parseInt
(
res
)
==
1
||
parseInt
(
res
)
==
2
){
socket
.
broadcast
.
to
(
socket
.
roomnum
).
emit
(
'broadcastingListen'
,[
data_str
]);
}
})
}
break
;
}
case
'BuyGuard'
:{
//购买守护
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'SendRed'
:{
//送红包
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'LiveConnect'
:{
//主播连麦
if
(
socket
.
roomnum
!=
socket
.
uid
){
//非主播不能操作
return
!
1
;
});
break
;
}
case
'SendGift'
:{
//送礼物
var
gifToken
=
dataObj
[
'msg'
][
0
][
'ct'
];
clientRedis
.
get
(
gifToken
,
function
(
error
,
res
){
if
(
!
error
&&
res
!=
null
){
//console.log(res);
var
resObj
=
evalJson
(
res
);
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
var
pkuid
=
LivePK
[
socket
.
roomnum
];
var
ifpk
=
'0'
,
pkuid1
=
'0'
,
pkuid2
=
'0'
,
pktotal1
=
'0'
,
pktotal2
=
'0'
;
if
(
pkuid
&&
pkuid
>
0
){
ifpk
=
'1'
;
var
total
=
Number
(
resObj
.
totalcoin
);
//LivePK_gift[socket.roomnum]+=total;
LivePK_gift
[
socket
.
roomnum
]
=
Number
(
LivePK_gift
[
socket
.
roomnum
])
+
total
;
clientRedis
.
hincrby
(
'LivePK_gift'
,
socket
.
roomnum
,
total
);
pkuid1
=
''
+
socket
.
roomnum
;
pkuid2
=
''
+
pkuid
;
pktotal1
=
''
+
LivePK_gift
[
socket
.
roomnum
];
pktotal2
=
''
+
LivePK_gift
[
pkuid
];
}
dataObj
[
'msg'
][
0
][
'ifpk'
]
=
ifpk
;
dataObj
[
'msg'
][
0
][
'pkuid1'
]
=
pkuid1
;
dataObj
[
'msg'
][
0
][
'pkuid2'
]
=
pkuid2
;
dataObj
[
'msg'
][
0
][
'pktotal1'
]
=
pktotal1
;
dataObj
[
'msg'
][
0
][
'pktotal2'
]
=
pktotal2
;
//console.log('sendgift'+socket.roomnum);
io
.
sockets
.
in
(
socket
.
roomnum
).
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
dataObj
)]);
if
(
pkuid
>
0
){
io
.
sockets
.
in
(
pkuid
).
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
dataObj
)]);
}
/* 幸运中奖 */
if
(
resObj
.
isluck
==
1
&&
resObj
.
isluckall
==
1
){
var
data_luck
=
{
"msg"
:[
{
"_method_"
:
"luckWin"
,
"action"
:
"1"
,
"uid"
:
''
+
msg
.
uid
,
"uname"
:
''
+
msg
.
uname
,
"uhead"
:
''
+
msg
.
uhead
,
"giftid"
:
''
+
resObj
.
giftid
,
"giftname"
:
''
+
resObj
.
giftname
,
"lucktimes"
:
''
+
resObj
.
lucktimes
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_luck
)]);
}
/* 幸运中奖 */
/* 奖池升级 */
if
(
resObj
.
isup
==
1
){
var
data_up
=
{
"msg"
:[
{
"_method_"
:
"jackpotUp"
,
"action"
:
"1"
,
"uplevel"
:
''
+
resObj
.
uplevel
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_up
)]);
}
/* 奖池升级 */
/* 奖池中奖 */
if
(
resObj
.
iswin
==
1
){
var
data_win
=
{
"msg"
:[
{
"_method_"
:
"jackpotWin"
,
"action"
:
"1"
,
"uid"
:
''
+
msg
.
uid
,
"uname"
:
''
+
msg
.
uname
,
"uhead"
:
''
+
msg
.
uhead
,
"wincoin"
:
''
+
resObj
.
wincoin
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_win
)]);
var
data_up
=
{
"msg"
:[
{
"_method_"
:
"jackpotUp"
,
"action"
:
"1"
,
"uplevel"
:
'0'
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_up
)]);
}
/* 奖池中奖 */
clientRedis
.
del
(
gifToken
);
}
var
pkuid
=
msg
[
'pkuid'
];
var
pkpull
=
msg
[
'pkpull'
];
// console.log('action');
// console.log(action);
// console.log('socket.uid');
// console.log(socket.uid);
// console.log('pkuid');
// console.log(pkuid);
// console.log('pkpull');
// console.log(pkpull);
//1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.手动断开连麦;7:对方正忙碌 8:对方无响应 9:主播繁忙(游戏)
if
(
action
==
'1'
){
LiveConnect_pull
[
socket
.
uid
]
=
pkpull
;
//console.log('LiveConnect_pull--'+socket.uid+'-----'+pkpull);
clientRedis
.
hset
(
'LiveConnect_pull'
,
socket
.
uid
,
pkpull
);
});
break
;
}
case
'SendBarrage'
:{
//弹幕
var
barragetoken
=
dataObj
[
'msg'
][
0
][
'ct'
];
clientRedis
.
get
(
barragetoken
,
function
(
error
,
res
){
if
(
!
error
&&
res
!=
null
){
var
resObj
=
evalJson
(
res
);
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
var
data_str
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
clientRedis
.
del
(
barragetoken
);
}
if
(
action
==
'2'
){
LiveConnect_pull
[
socket
.
uid
]
=
pkpull
;
//console.log('LiveConnect_pull--'+socket.uid+'-----'+pkpull);
clientRedis
.
hset
(
'LiveConnect_pull'
,
socket
.
uid
,
pkpull
);
});
break
;
}
case
'ConnectVideo'
:{
//连麦
//1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.发起者断开连麦;6:主播断开连麦;7:主播正忙碌 8:主播无响应
if
(
action
==
'5'
||
action
==
'6'
){
clientRedis
.
hget
(
'ShowVideo'
,
socket
.
roomnum
,
function
(
error
,
res
){
if
(
error
){
return
!
1
;
}
if
(
!
res
){
return
!
1
;
}
var
res_j
=
JSON
.
parse
(
res
);
/* 更新 连麦关系 */
LiveConnect
[
socket
.
uid
]
=
pkuid
;
LiveConnect
[
pkuid
]
=
socket
.
uid
;
if
(
socket
.
uid
==
res_j
[
'uid'
]
||
socket
.
uid
==
socket
.
roomnum
){
clientRedis
.
hdel
(
'ShowVideo'
,
socket
.
roomnum
);
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
});
}
else
{
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'light'
:{
//点亮
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'changeLive'
:{
//切换房间收费
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'updateVotes'
:{
//更新映票
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'CloseLive'
:{
//关闭直播
if
(
socket
.
usertype
==
50
){
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'KickUser'
:{
//踢人
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'ShutUpUser'
:{
//禁言
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'stopLive'
:{
//超管关播
clientRedis
.
hget
(
"super"
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
!=
null
){
process_msg
(
io
,
socket
.
roomnum
,
'stopplay'
);
}
});
break
;
}
case
'ResumeUser'
:{
//恢复发言
if
(
socket
.
usertype
==
50
||
socket
.
usertype
==
40
){
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'setAdmin'
:{
//设置/取消管理员
if
(
socket
.
usertype
==
50
){
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
}
break
;
}
case
'StartEndLive'
:{
if
(
socket
.
usertype
==
50
){
socket
.
broadcast
.
to
(
socket
.
roomnum
).
emit
(
'broadcastingListen'
,[
data_str
]);
}
else
{
clientRedis
.
get
(
"LiveAuthority"
+
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
parseInt
(
res
)
==
5
||
parseInt
(
res
)
==
1
||
parseInt
(
res
)
==
2
){
socket
.
broadcast
.
to
(
socket
.
roomnum
).
emit
(
'broadcastingListen'
,[
data_str
]);
}
})
}
break
;
}
case
'BuyGuard'
:{
//购买守护
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'SendRed'
:{
//送红包
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'LiveConnect'
:{
//主播连麦
if
(
socket
.
roomnum
!=
socket
.
uid
){
//非主播不能操作
return
!
1
;
}
var
pkuid
=
msg
[
'pkuid'
];
var
pkpull
=
msg
[
'pkpull'
];
// console.log('action');
// console.log(action);
// console.log('socket.uid');
// console.log(socket.uid);
// console.log('pkuid');
// console.log(pkuid);
// console.log('pkpull');
// console.log(pkpull);
//1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.手动断开连麦;7:对方正忙碌 8:对方无响应 9:主播繁忙(游戏)
if
(
action
==
'1'
){
LiveConnect_pull
[
socket
.
uid
]
=
pkpull
;
//console.log('LiveConnect_pull--'+socket.uid+'-----'+pkpull);
clientRedis
.
hset
(
'LiveConnect_pull'
,
socket
.
uid
,
pkpull
);
}
if
(
action
==
'2'
){
LiveConnect_pull
[
socket
.
uid
]
=
pkpull
;
//console.log('LiveConnect_pull--'+socket.uid+'-----'+pkpull);
clientRedis
.
hset
(
'LiveConnect_pull'
,
socket
.
uid
,
pkpull
);
//console.log('LiveConnect');
//console.log(socket.uid)
//console.log(pkuid)
;
/* 更新 连麦关系 */
LiveConnect
[
socket
.
uid
]
=
pkuid
;
LiveConnect
[
pkuid
]
=
socket
.
uid
;
clientRedis
.
hset
(
'LiveConnect'
,
socket
.
uid
,
pkuid
);
clientRedis
.
hset
(
'LiveConnect'
,
pkuid
,
socket
.
uid
);
//console.log('LiveConnect');
//console.log(socket.uid)
//console.log(pkuid);
/* 更新数据库 */
var
sign_data
=
{
uid
:
socket
.
uid
,
pkuid
:
pkuid
,
type
:
1
};
var
sign
=
setSign
(
sign_data
);
request
(
config
[
'WEBADDRESS'
]
+
"?service=Livepk.changeLive&uid="
+
socket
.
uid
+
"&pkuid="
+
pkuid
+
"&type=1&sign="
+
sign
,
function
(
error
,
response
,
body
){});
clientRedis
.
hset
(
'LiveConnect'
,
socket
.
uid
,
pkuid
);
clientRedis
.
hset
(
'LiveConnect'
,
pkuid
,
socket
.
uid
);
/* 发送连麦成功信息 */
/* 当前房间 */
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"LiveConnect"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
pkuid
,
"pkpull"
:
""
+
LiveConnect_pull
[
pkuid
],
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
/* 更新数据库 */
var
sign_data
=
{
uid
:
socket
.
uid
,
pkuid
:
pkuid
,
type
:
1
};
var
sign
=
setSign
(
sign_data
);
request
(
config
[
'WEBADDRESS'
]
+
"?service=Livepk.changeLive&uid="
+
socket
.
uid
+
"&pkuid="
+
pkuid
+
"&type=1&sign="
+
sign
,
function
(
error
,
response
,
body
){});
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
/* 对方房间 */
var
data_obj_pk
=
{
"msg"
:[
{
"_method_"
:
"LiveConnect"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
socket
.
uid
,
"pkpull"
:
""
+
LiveConnect_pull
[
socket
.
uid
],
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
pkuid
,
JSON
.
stringify
(
data_obj_pk
));
}
else
if
(
action
==
'5'
){
/* 清除连麦信息 */
endLiveConnect
(
io
,
socket
.
uid
);
}
else
{
var
socket_pkuid
=
sockets
[
pkuid
];
if
(
socket_pkuid
){
socket_pkuid
.
emit
(
'broadcastingListen'
,[
data_str
]);
}
/* 发送连麦成功信息 */
/* 当前房间 */
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"LiveConnect"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
pkuid
,
"pkpull"
:
""
+
LiveConnect_pull
[
pkuid
],
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
/* 对方房间 */
var
data_obj_pk
=
{
"msg"
:[
{
"_method_"
:
"LiveConnect"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
socket
.
uid
,
"pkpull"
:
""
+
LiveConnect_pull
[
socket
.
uid
],
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
pkuid
,
JSON
.
stringify
(
data_obj_pk
));
}
else
if
(
action
==
'5'
){
if
(
LivePKtime_timer
[
socket
.
uid
]){
clearInterval
(
LivePKtime_timer
[
socket
.
uid
]);
LivePKtime_timer
[
socket
.
uid
]
=
null
;
}
break
;
}
case
'LivePK'
:{
//主播PK
if
(
socket
.
roomnum
!=
socket
.
uid
){
//非主播不能操作
return
!
1
;
if
(
LivePHtime_timer
[
socket
.
uid
]){
clearInterval
(
LivePHtime_timer
[
socket
.
uid
]);
LivePHtime_timer
[
socket
.
uid
]
=
null
;
}
var
uid
=
msg
[
'uid'
];
var
pkuid
=
msg
[
'pkuid'
];
//1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.手动断开连麦;7:对方正忙碌 8:对方无响应; 9:PK结果
if
(
action
==
'2'
){
/* 更新PK状态 */
LivePK
[
socket
.
uid
]
=
pkuid
;
LivePK
[
pkuid
]
=
socket
.
uid
;
if
(
LivePKtime_timer
[
pkuid
]){
clearInterval
(
LivePKtime_timer
[
pkuid
]);
LivePK
_gift
[
socket
.
uid
]
=
0
;
LivePK_gift
[
pkuid
]
=
0
;
LivePK
time_timer
[
pkuid
]
=
null
;
}
//console.log('LivePK');
//console.log(socket.uid);
//console.log(pkuid);
if
(
LivePHtime_timer
[
pkuid
]){
clearInterval
(
LivePHtime_timer
[
pkuid
]);
LivePHtime_timer
[
pkuid
]
=
null
;
}
/* 清除连麦信息 */
endLiveConnect
(
io
,
socket
.
uid
);
}
else
{
var
socket_pkuid
=
sockets
[
pkuid
];
if
(
socket_pkuid
){
socket_pkuid
.
emit
(
'broadcastingListen'
,[
data_str
]);
}
}
break
;
}
case
'LivePK'
:{
//主播PK
if
(
socket
.
roomnum
!=
socket
.
uid
){
//非主播不能操作
return
!
1
;
}
var
uid
=
msg
[
'uid'
];
var
pkuid
=
msg
[
'pkuid'
];
//1:发起连麦;2;接受连麦;3:拒绝连麦;4:连麦成功通知;5.手动断开连麦;7:对方正忙碌 8:对方无响应; 9:PK结果
if
(
action
==
'2'
){
/* 更新PK状态 */
LivePK
[
socket
.
uid
]
=
pkuid
;
LivePK
[
pkuid
]
=
socket
.
uid
;
LivePK_gift
[
socket
.
uid
]
=
0
;
LivePK_gift
[
pkuid
]
=
0
;
//console.log('LivePK');
//console.log(socket.uid);
//console.log(pkuid);
clientRedis
.
hset
(
'LivePK'
,
socket
.
uid
,
pkuid
);
clientRedis
.
hset
(
'LivePK'
,
pkuid
,
socket
.
uid
);
clientRedis
.
hset
(
'LivePK_gift'
,
socket
.
uid
,
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
=
{
"msg"
:[
{
"_method_"
:
"LivePK"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
pkuid
,
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
,
"time"
:
""
+
time
,
//当前时间
"pktime"
:
""
+
phtime
//pk结束时间
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
/* 对方房间 */
var
data_obj_pk
=
{
"msg"
:[
{
"_method_"
:
"LivePK"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
socket
.
uid
,
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
,
"time"
:
""
+
time
,
//当前时间
"pktime"
:
""
+
phtime
//pk结束时间
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
pkuid
,
JSON
.
stringify
(
data_obj_pk
));
clientRedis
.
hset
(
'LivePK'
,
socket
.
uid
,
pkuid
);
clientRedis
.
hset
(
'LivePK'
,
pkuid
,
socket
.
uid
);
clearTimeout
(
LivePK_timer
[
socket
.
uid
]);
LivePK_timer
[
socket
.
uid
]
=
null
;
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');
//console.log(time);
//当前主播和发起主播的PK时间和惩罚时间
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
);
/* 发送连麦成功信息 */
/* 当前房间 */
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"LivePK"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
pkuid
,
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
/* 对方房间 */
var
data_obj_pk
=
{
"msg"
:[
{
"_method_"
:
"LivePK"
,
"action"
:
"4"
,
"msgtype"
:
"10"
,
"pkuid"
:
""
+
socket
.
uid
,
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
pkuid
,
JSON
.
stringify
(
data_obj_pk
));
clearTimeout
(
LivePK_timer
[
socket
.
uid
]);
LivePK_timer
[
socket
.
uid
]
=
null
;
var
time
=
Math
.
floor
(
(
new
Date
()).
getTime
()
/
1000
);
//console.log('LivePK_timer_'+socket.uid+'___'+pkuid);
//console.log('LivePK_timer');
//console.log(time);
clientRedis
.
hset
(
'LivePK_timer'
,
socket
.
uid
,
time
);
LivePK_timer
[
socket
.
uid
]
=
setTimeout
(
function
()
{
//定时发送结果
endLivePk
(
io
,
socket
.
uid
,
0
);
},
7
*
60
*
1000
);
//5*60*1000
}
else
if
(
action
==
'5'
){
/* 清除PK信息 */
endLivePk
(
io
,
socket
.
uid
,
1
);
}
else
{
var
socket_pkuid
=
sockets
[
pkuid
];
if
(
socket_pkuid
){
socket_pkuid
.
emit
(
'broadcastingListen'
,[
data_str
]);
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'
};
}
//process_msg(io,pkuid,data_str);
// 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
()
{
//定时发送结果
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
);
},
5
*
60
*
1000
);
//5*60*1000
}
else
if
(
action
==
'5'
){
if
(
LivePKtime_timer
[
socket
.
uid
]){
clearInterval
(
LivePKtime_timer
[
socket
.
uid
]);
LivePKtime_timer
[
socket
.
uid
]
=
null
;
}
break
;
}
case
'SystemNot'
:{
//系统通知
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'shangzhuang'
:{
//上、下庄
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'startGame'
:{
//炸金花游戏
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startRotationGame'
:{
//转盘
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
////console.log(body);
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startRotationGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startCattleGame'
:{
//开心牛仔
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startCattleGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startLodumaniGame'
:{
//海盗船长
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startLodumaniGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startShellGame'
:{
//二八贝
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startShellGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'requestFans'
:{
request
(
config
[
'WEBADDRESS'
]
+
"?service=Live.getZombie&stream="
+
socket
.
stream
+
"&uid="
+
socket
.
uid
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
data_str2
=
"{
\"
msg
\"
:[{
\"
_method_
\"
:
\"
requestFans
\"
,
\"
action
\"
:
\"
3
\"
,
\"
ct
\"
: "
+
body
+
",
\"
msgtype
\"
:
\"
0
\"
}],
\"
retcode
\"
:
\"
000000
\"
,
\"
retmsg
\"
:
\"
OK
\"
}"
;
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
}
}
}
});
socket
.
on
(
'superadminaction'
,
function
(
data
){
if
(
data
[
'token'
]
==
config
[
'TOKEN'
]){
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信息 */
endLivePk
(
io
,
socket
.
uid
,
1
);
}
else
{
var
socket_pkuid
=
sockets
[
pkuid
];
if
(
socket_pkuid
){
socket_pkuid
.
emit
(
'broadcastingListen'
,[
data_str
]);
}
//process_msg(io,pkuid,data_str);
}
break
;
}
case
'SystemNot'
:{
//系统通知
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'shangzhuang'
:{
//上、下庄
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
break
;
}
case
'startGame'
:{
//炸金花游戏
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startRotationGame'
:{
//转盘
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
////console.log(body);
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startRotationGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startCattleGame'
:{
//开心牛仔
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startCattleGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startLodumaniGame'
:{
//海盗船长
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startLodumaniGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'startShellGame'
:{
//二八贝
process_msg
(
io
,
socket
.
roomnum
,
data_str
);
if
(
action
==
4
)
{
var
time
=
msg
[
'time'
]
*
1000
;
var
gameid
=
msg
[
'gameid'
];
setTimeout
(
function
()
{
//定时发送结果
request
(
config
[
'WEBADDRESS'
]
+
"?service=Game.endGame&liveuid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&gameid="
+
gameid
+
"&type=1"
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
resObj
=
res
.
data
.
info
;
dataObj
[
'msg'
][
0
][
'ct'
]
=
resObj
;
dataObj
[
'msg'
][
0
][
'_method_'
]
=
"startShellGame"
;
dataObj
[
'msg'
][
0
][
'action'
]
=
"6"
;
var
data_str2
=
JSON
.
stringify
(
dataObj
);
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
},
time
);
}
break
;
}
case
'requestFans'
:{
request
(
config
[
'WEBADDRESS'
]
+
"?service=Live.getZombie&stream="
+
socket
.
stream
+
"&uid="
+
socket
.
uid
,
function
(
error
,
response
,
body
){
if
(
error
)
return
;
var
res
=
evalJson
(
body
);
if
(
response
.
statusCode
==
200
&&
res
.
data
.
code
==
0
){
var
data_str2
=
"{
\"
msg
\"
:[{
\"
_method_
\"
:
\"
requestFans
\"
,
\"
action
\"
:
\"
3
\"
,
\"
ct
\"
: "
+
body
+
",
\"
msgtype
\"
:
\"
0
\"
}],
\"
retcode
\"
:
\"
000000
\"
,
\"
retmsg
\"
:
\"
OK
\"
}"
;
process_msg
(
io
,
socket
.
roomnum
,
data_str2
);
}
});
}
}
}
});
socket
.
on
(
'superadminaction'
,
function
(
data
){
if
(
data
[
'token'
]
==
config
[
'TOKEN'
]){
io
.
sockets
.
in
(
data
[
'roomnum'
]).
emit
(
"broadcastingListen"
,
[
'stopplay'
]);
}
}
});
/* 系统信息 */
socket
.
on
(
'systemadmin'
,
function
(
data
){
if
(
data
[
'token'
]
==
config
[
'TOKEN'
]){
/* 系统信息 */
socket
.
on
(
'systemadmin'
,
function
(
data
){
if
(
data
[
'token'
]
==
config
[
'TOKEN'
]){
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"SystemNot"
,
"action"
:
"1"
,
"ct"
:
''
+
data
.
content
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_obj
)]);
}
});
//资源释放
socket
.
on
(
'disconnect'
,
function
()
{
console
.
log
(
'disconnect:'
+
socket
.
uid
+
' '
+
socket
.
token
+
' '
+
socket
.
roomnum
);
/* numscount--;
if(numscount<0){
numscount=0;
} */
if
(
socket
.
roomnum
==
null
||
socket
.
token
==
null
||
socket
.
uid
<=
0
){
return
!
1
;
}
d
.
run
(
function
()
{
/* 用户连麦 */
clientRedis
.
hget
(
'ShowVideo'
,
socket
.
roomnum
,
function
(
error
,
res
){
if
(
error
){
return
!
1
;
}
if
(
!
res
){
return
!
1
;
}
var
res_j
=
JSON
.
parse
(
res
);
if
(
socket
.
uid
==
res_j
[
'uid'
]
||
socket
.
uid
==
socket
.
roomnum
){
clientRedis
.
hdel
(
'ShowVideo'
,
socket
.
roomnum
);
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"ConnectVideo"
,
"action"
:
"5"
,
"msgtype"
:
"10"
,
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
}
});
if
(
socket
.
roomnum
==
socket
.
uid
){
/* 主播 */
if
(
socket
.
reusing
==
0
){
request
(
config
[
'WEBADDRESS'
]
+
"?service=Live.stopRoom&uid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&type=1&stream="
+
socket
.
stream
,
function
(
error
,
response
,
body
){
console
.
log
(
body
);
});
var
data_obj
=
{
"retmsg"
:
"ok"
,
"retcode"
:
"000000"
,
"msg"
:[
{
"msgtype"
:
"1"
,
"_method_"
:
"StartEndLive"
,
"action"
:
"18"
,
"ct"
:
"直播关闭"
}
]
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
endLiveConnect
(
io
,
socket
.
uid
);
}
}
else
{
/* 观众 */
clientRedis
.
zrem
(
'user_'
+
socket
.
stream
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
){
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"
SystemNo
t"
,
"_method_"
:
"
disconnec
t"
,
"action"
:
"1"
,
"ct"
:
''
+
data
.
content
,
"msgtype"
:
"4"
"ct"
:{
"id"
:
''
+
socket
.
uid
,
"user_nicename"
:
''
+
socket
.
nicename
,
"avatar"
:
socket
.
avatar
,
"level"
:
''
+
socket
.
level
},
"msgtype"
:
"0"
,
"uid"
:
''
+
socket
.
uid
,
"uname"
:
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
io
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_obj
)]);
}
});
//资源释放
socket
.
on
(
'disconnect'
,
function
()
{
/* numscount--;
if(numscount<0){
numscount=0;
} */
if
(
socket
.
roomnum
==
null
||
socket
.
token
==
null
||
socket
.
uid
<=
0
){
return
!
1
;
}
d
.
run
(
function
()
{
/* 用户连麦 */
clientRedis
.
hget
(
'ShowVideo'
,
socket
.
roomnum
,
function
(
error
,
res
){
if
(
error
){
return
!
1
;
}
if
(
!
res
){
return
!
1
;
}
var
res_j
=
JSON
.
parse
(
res
);
if
(
socket
.
uid
==
res_j
[
'uid'
]
||
socket
.
uid
==
socket
.
roomnum
){
clientRedis
.
hdel
(
'ShowVideo'
,
socket
.
roomnum
);
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"ConnectVideo"
,
"action"
:
"5"
,
"msgtype"
:
"10"
,
"uid"
:
""
+
socket
.
uid
,
"uname"
:
""
+
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
}
});
});
}
////console.log(socket.roomnum+"==="+socket.token+"===="+socket.uid+"======"+socket.stream);
if
(
socket
.
roomnum
==
socket
.
uid
){
/* 主播 */
socket
.
leave
(
socket
.
roomnum
);
delete
io
.
sockets
.
sockets
[
socket
.
id
];
sockets
[
socket
.
uid
]
=
null
;
delete
sockets
[
socket
.
uid
];
if
(
socket
.
reusing
==
0
){
request
(
config
[
'WEBADDRESS'
]
+
"?service=Live.stopRoom&uid="
+
socket
.
uid
+
"&token="
+
socket
.
token
+
"&type=1&stream="
+
socket
.
stream
,
function
(
error
,
response
,
body
){
console
.
log
(
body
);
});
var
data_obj
=
{
"retmsg"
:
"ok"
,
"retcode"
:
"000000"
,
"msg"
:[
{
"msgtype"
:
"1"
,
"_method_"
:
"StartEndLive"
,
"action"
:
"18"
,
"ct"
:
"直播关闭"
}
]
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
endLiveConnect
(
io
,
socket
.
uid
);
}
}
else
{
/* 观众 */
clientRedis
.
zrem
(
'user_'
+
socket
.
stream
,
socket
.
uid
,
function
(
error
,
res
){
if
(
error
)
return
;
if
(
res
){
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"disconnect"
,
"action"
:
"1"
,
"ct"
:{
"id"
:
''
+
socket
.
uid
,
"user_nicename"
:
''
+
socket
.
nicename
,
"avatar"
:
socket
.
avatar
,
"level"
:
''
+
socket
.
level
},
"msgtype"
:
"0"
,
"uid"
:
''
+
socket
.
uid
,
"uname"
:
socket
.
nicename
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
socket
.
roomnum
,
JSON
.
stringify
(
data_obj
));
}
});
}
////console.log(socket.roomnum+"==="+socket.token+"===="+socket.uid+"======"+socket.stream);
socket
.
leave
(
socket
.
roomnum
);
delete
io
.
sockets
.
sockets
[
socket
.
id
];
sockets
[
socket
.
uid
]
=
null
;
delete
sockets
[
socket
.
uid
];
});
});
});
});
});
function
sendSystemMsg
(
socket
,
msg
){
let
msg2
=
encodeURIComponent
(
msg
);
//安卓端自动urlencode
//let msg2 = msg;
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"SystemNot"
,
"action"
:
"1"
,
"ct"
:
""
+
msg2
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
socket
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_obj
)]);
"msg"
:[
{
"_method_"
:
"SystemNot"
,
"action"
:
"1"
,
"ct"
:
""
+
msg2
,
"msgtype"
:
"4"
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
socket
.
emit
(
'broadcastingListen'
,[
JSON
.
stringify
(
data_obj
)]);
}
function
evalJson
(
data
){
return
eval
(
"("
+
data
+
")"
);
return
eval
(
"("
+
data
+
")"
);
}
function
process_msg
(
io
,
roomnum
,
data
){
if
(
!
chat_history
[
roomnum
]){
chat_history
[
roomnum
]
=
[];
}
chat_history
[
roomnum
].
push
(
data
);
chat_interval
[
roomnum
]
||
(
chat_interval
[
roomnum
]
=
setInterval
(
function
(){
if
(
chat_history
[
roomnum
].
length
>
0
){
send_msg
(
io
,
roomnum
);
}
else
{
clearInterval
(
chat_interval
[
roomnum
]);
chat_interval
[
roomnum
]
=
null
;
}
},
200
));
if
(
!
chat_history
[
roomnum
]){
chat_history
[
roomnum
]
=
[];
}
chat_history
[
roomnum
].
push
(
data
);
chat_interval
[
roomnum
]
||
(
chat_interval
[
roomnum
]
=
setInterval
(
function
(){
if
(
chat_history
[
roomnum
].
length
>
0
){
send_msg
(
io
,
roomnum
);
}
else
{
clearInterval
(
chat_interval
[
roomnum
]);
chat_interval
[
roomnum
]
=
null
;
}
},
200
));
}
function
send_msg
(
io
,
roomnum
){
var
data
=
chat_history
[
roomnum
].
splice
(
0
,
chat_history
[
roomnum
].
length
);
var
data
=
chat_history
[
roomnum
].
splice
(
0
,
chat_history
[
roomnum
].
length
);
io
.
sockets
.
in
(
roomnum
).
emit
(
"broadcastingListen"
,
data
);
}
...
...
@@ -1018,18 +1147,18 @@ function endLiveConnect(io,uid){
clientRedis
.
hset
(
'LivePK_gift'
,
pkuid
,
0
);
var
data_obj
=
{
"msg"
:[
{
"_method_"
:
"LiveConnect"
,
"action"
:
"5"
,
"msgtype"
:
"10"
,
"uid"
:
""
+
uid
,
"uname"
:
""
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
"msg"
:[
{
"_method_"
:
"LiveConnect"
,
"action"
:
"5"
,
"msgtype"
:
"10"
,
"uid"
:
""
+
uid
,
"uname"
:
""
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
uid
,
JSON
.
stringify
(
data_obj
));
process_msg
(
io
,
pkuid
,
JSON
.
stringify
(
data_obj
));
...
...
@@ -1057,7 +1186,16 @@ function endLivePk(io,uid,type){
clearTimeout
(
LivePK_timer
[
pkuid
]);
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
){
win_uid
=
pkuid
;
}
else
if
(
end_gift_uid
>
end_gift_pkuid
){
...
...
@@ -1070,8 +1208,8 @@ function endLivePk(io,uid,type){
LivePK
[
uid
]
=
0
;
LivePK
[
pkuid
]
=
0
;
LivePK_gift
[
uid
]
=
0
;
LivePK_gift
[
pkuid
]
=
0
;
//
LivePK_gift[uid]=0;
//
LivePK_gift[pkuid]=0;
// console.log('endLivePk');
// console.log(type);
...
...
@@ -1085,34 +1223,38 @@ function endLivePk(io,uid,type){
clientRedis
.
hset
(
'LivePK'
,
uid
,
0
);
clientRedis
.
hset
(
'LivePK'
,
pkuid
,
0
);
clientRedis
.
hset
(
'LivePK_gift'
,
uid
,
0
);
clientRedis
.
hset
(
'LivePK_gift'
,
pkuid
,
0
);
// clientRedis.hset('LivePK_gift',uid,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
=
{
"msg"
:[
{
"_method_"
:
"LivePK"
,
"action"
:
"9"
,
"msgtype"
:
"10"
,
"win_uid"
:
""
+
win_uid
,
"uid"
:
""
+
uid
,
"uname"
:
""
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
"msg"
:[
{
"_method_"
:
"LivePK"
,
"action"
:
"9"
,
"msgtype"
:
"10"
,
"win_uid"
:
""
+
win_uid
,
"uid"
:
""
+
uid
,
"uname"
:
""
,
"time"
:
""
+
time
,
"phetime"
:
""
+
phetime
}
],
"retcode"
:
"000000"
,
"retmsg"
:
"OK"
};
process_msg
(
io
,
uid
,
JSON
.
stringify
(
data_obj
));
process_msg
(
io
,
pkuid
,
JSON
.
stringify
(
data_obj
));
}
//时间格式化
function
FormatNowDate
(){
var
mDate
=
new
Date
();
var
H
=
mDate
.
getHours
();
var
i
=
mDate
.
getMinutes
();
var
s
=
mDate
.
getSeconds
();
return
H
+
':'
+
i
+
':'
+
s
;
var
mDate
=
new
Date
();
var
H
=
mDate
.
getHours
();
var
i
=
mDate
.
getMinutes
();
var
s
=
mDate
.
getSeconds
();
return
H
+
':'
+
i
+
':'
+
s
;
}
/* sign加密 */
...
...
@@ -1130,3 +1272,10 @@ function setSign(obj) {//排序的函数
var
sign
=
md5
(
str
);
return
sign
;
}
//将0-9的数字前面加上0,例1变为01,计时用
function
checkTime1
(
i
)
{
if
(
i
<
10
)
{
i
=
"0"
+
i
;
}
return
i
;
}
api/Appapi/Api/Live.php
View file @
65e62503
...
...
@@ -1059,12 +1059,13 @@ class Api_Live extends PhalApi_Api {
/* 主播连麦 */
$pkinfo
=
array
(
'pkuid'
=>
'0'
,
'pkpull'
=>
'0'
,
'ifpk'
=>
'0'
,
'pk_time'
=>
'0'
,
'pk_gift_liveuid'
=>
'0'
,
'pk_gift_pkuid'
=>
'0'
,
'pkuid'
=>
'0'
,
'pkpull'
=>
'0'
,
'ifpk'
=>
'0'
,
'pk_time'
=>
'0'
,
'ph_time'
=>
'0'
,
'pk_gift_liveuid'
=>
'0'
,
'pk_gift_pkuid'
=>
'0'
,
);
$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);
...
...
@@ -1074,6 +1075,17 @@ class Api_Live extends PhalApi_Api {
$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);
$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
);
if
(
$ifpk
){
$pkinfo
[
'ifpk'
]
=
'1'
;
...
...
@@ -1081,7 +1093,7 @@ class Api_Live extends PhalApi_Api {
if
(
!
$pk_time
){
$pk_time
=
DI
()
->
redis
->
hGet
(
'LivePK_timer'
,
$pkuid
);
}
$nowtime
=
time
();
//
$nowtime=time();
if
(
$pk_time
&&
$pk_time
>
0
&&
$pk_time
<
$nowtime
){
$cha
=
7
*
60
-
(
$nowtime
-
$pk_time
);
$pkinfo
[
'pk_time'
]
=
(
string
)
$cha
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment