Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
李勇
/
McuClient
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
李勇
9 years ago
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
9f3d40e28fdc977f52170ebb74edae2ee55c68f8
9f3d40e2
1 parent
9f50a301
修改各个模块默认服务器地址选择的逻辑,由默认使用第一个修改为随机选择
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
97 行增加
和
61 行删除
dist/McuClient.js
src/EngineEntrance.js
src/EverSocket.js
src/MessageTypes.js
dist/McuClient.js
查看文件 @
9f3d40e
此 diff 太大无法显示。
src/EngineEntrance.js
查看文件 @
9f3d40e
...
...
@@ -27,7 +27,7 @@ import Server from "config/Server";
import
UTF8
from
'utf-8'
;
let
loger
=
Loger
.
getLoger
(
'McuClient'
);
let
_sdkInfo
=
{
"version"
:
"v1.9.1
2.20170419
"
,
"author"
:
"www.3mang.com"
};
let
_sdkInfo
=
{
"version"
:
"v1.9.1
4.20170420
"
,
"author"
:
"www.3mang.com"
};
//APE
let
_sass
;
...
...
@@ -261,19 +261,6 @@ export default class MessageEntrance extends Emiter {
//有人员离开
_onClassDeleteRoster
(
_data
)
{
//在conferApe中做处理,这里不需要再处理
//{"nodeId":nodeId}
//当有人员离开的时候,如果离开的人员已经推流,那么需要停止推流,然后释放channel;
/* if(_data!=null&&_data.nodeId!=null){
loger.log("有人员离开,检查一下离开的人员是否关闭推流");
if(_video_ape){
_video_ape.stopPublishVideo(_data);
}
if(_audio_ape){
_audio_ape.stopPublishAudio(_data);
}
}*/
}
//当前课堂中视频或音频占用channel的nodeId ,在人员列表中不存在,这种情况是占用channel的人员掉线或离开的时候没有释放channel
...
...
@@ -304,17 +291,17 @@ export default class MessageEntrance extends Emiter {
//{"classId":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0}
//判断传入的参数是否存在
if
(
_param
==
null
||
EngineUtils
.
isEmptyObject
(
_param
))
{
loger
.
error
(
'
init初始化失败,参数错误'
);
loger
.
error
(
'
初始化课堂失败->参数错误'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_CLASS_INIT_PARAM
);
return
;
}
//判断必要的参数字段值
if
(
_param
.
classId
==
null
||
isNaN
(
_param
.
classId
)
||
_param
.
portal
==
null
||
_param
.
portal
==
""
)
{
loger
.
error
(
'
init初始化失败
'
,
_param
);
loger
.
error
(
'
初始化课堂失败->参数错误
'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_CLASS_INIT_PARAM
);
return
;
}
loger
.
log
(
'
init
'
,
_param
);
loger
.
log
(
'
初始化课堂->
'
,
_param
);
//保存参数
GlobalConfig
.
isRecordPlayBack
=
false
;
//设置为非录制回放状态
...
...
@@ -351,12 +338,12 @@ export default class MessageEntrance extends Emiter {
_joinClass
(
_param
)
{
if
(
_param
==
null
||
EngineUtils
.
isEmptyObject
(
_param
))
{
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_CLASS_JOIN_PARAM
);
loger
.
log
(
'
不能进入课堂,传递的参数不对
.'
,
_param
);
loger
.
log
(
'
加入课堂失败->参数错误
.'
,
_param
);
return
;
}
//判断userName
if
(
_param
.
userName
==
null
||
_param
.
userName
==
""
)
{
loger
.
log
(
'
不能进入课堂,传递的参数不对.
名字不能为空'
);
loger
.
log
(
'
加入课堂失败->参数错误->
名字不能为空'
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_CLASS_JOIN_PARAM
);
return
;
}
...
...
@@ -395,7 +382,7 @@ export default class MessageEntrance extends Emiter {
//host默认需要密码,Sass服务器只判断学生是否需要密码,没有判断老师的
GlobalConfig
.
passwordRequired
=
_data
.
passwordRequired
||
false
;
//md5验证的时候需要Sass返回的值,不能更改
loger
.
log
(
'
SASS平台获取入会验证信息成功
.'
);
loger
.
log
(
'
初始化课堂验证完成
.'
);
//设置当前的课堂状态
GlobalConfig
.
setCurrentStatus
(
GlobalConfig
.
statusCode_1
);
...
...
@@ -428,7 +415,7 @@ export default class MessageEntrance extends Emiter {
//获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do
_sassGetClassParamSuccessHandler
(
_data
)
{
loger
.
log
(
'获取课堂课堂
的完整
信息完成.'
);
loger
.
log
(
'获取课堂课堂信息完成.'
);
//包含整个课堂最全的信息,储存数据
if
(
_data
)
{
GlobalConfig
.
mcuDelay
=
_data
.
h5Delay
||
0
;
//mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用
...
...
@@ -459,23 +446,38 @@ export default class MessageEntrance extends Emiter {
if
(
_data
.
mcuList
&&
_data
.
mcuList
.
length
>
0
)
{
//MCU地址默认使用第一个
GlobalConfig
.
MCUServerIP
=
_data
.
mcuList
[
0
].
ip
||
""
;
GlobalConfig
.
MCUServerPort
=
_data
.
mcuList
[
0
].
port
||
""
;
/* //MCU地址默认使用第一个
GlobalConfig.MCUServerIP = _data.mcuList[0].ip || "";
GlobalConfig.MCUServerPort = _data.mcuList[0].port || "";*/
//随机选择一个
let
index
=
parseInt
(
Math
.
random
()
*
_data
.
mcuList
.
length
);
GlobalConfig
.
MCUServerIP
=
_data
.
mcuList
[
index
].
ip
||
""
;
GlobalConfig
.
MCUServerPort
=
_data
.
mcuList
[
index
].
port
||
""
;
loger
.
log
(
'初始->MCU->.'
,
GlobalConfig
.
MCUServerIP
,
GlobalConfig
.
MCUServerPort
);
}
//上课中视频推流播流地址
if
(
_data
.
msList
&&
_data
.
msList
.
length
>
0
)
{
//MS地址默认使用第一个
GlobalConfig
.
MSServerIP
=
_data
.
msList
[
0
].
ip
||
""
;
GlobalConfig
.
MSServerPort
=
_data
.
msList
[
0
].
port
||
""
;
/* GlobalConfig.MSServerIP = _data.msList[0].ip || "";
GlobalConfig.MSServerPort = _data.msList[0].port || "";*/
let
index
=
parseInt
(
Math
.
random
()
*
_data
.
msList
.
length
);
GlobalConfig
.
MSServerIP
=
_data
.
msList
[
index
].
ip
||
""
;
GlobalConfig
.
MSServerPort
=
_data
.
msList
[
index
].
port
||
""
;
loger
.
log
(
'初始->MS->.'
,
GlobalConfig
.
MSServerIP
,
GlobalConfig
.
MSServerPort
);
}
//录制回放时m3u8播流地址
if
(
_data
.
rsList
&&
_data
.
rsList
.
length
>
0
)
{
//RS地址默认使用第一个
GlobalConfig
.
RSServerIP
=
_data
.
rsList
[
0
].
ip
||
""
;
GlobalConfig
.
RSServerPort
=
_data
.
rsList
[
0
].
port
||
""
;
//GlobalConfig.RSServerIP = _data.rsList[0].ip || "";
//GlobalConfig.RSServerPort = _data.rsList[0].port || "";
let
index
=
parseInt
(
Math
.
random
()
*
_data
.
msList
.
length
);
GlobalConfig
.
RSServerIP
=
_data
.
rsList
[
index
].
ip
||
""
;
GlobalConfig
.
RSServerPort
=
_data
.
rsList
[
index
].
port
||
""
;
loger
.
log
(
'初始->RS->.'
,
GlobalConfig
.
RSServerIP
,
GlobalConfig
.
RSServerPort
);
}
//文档地址
...
...
@@ -485,13 +487,19 @@ export default class MessageEntrance extends Emiter {
loger
.
log
(
"docServer->"
,
_data
.
docList
[
index
]);
GlobalConfig
.
DOCServerIP
=
_data
.
docList
[
index
].
ip
||
""
;
GlobalConfig
.
DOCServerPort
=
_data
.
docList
[
index
].
port
||
""
;
loger
.
log
(
'初始->DOC->.'
,
GlobalConfig
.
DOCServerIP
,
GlobalConfig
.
DOCServerPort
);
}
//record
if
(
_data
.
recordList
&&
_data
.
recordList
.
length
>
0
)
{
//地址默认使用第一个
GlobalConfig
.
RecordServerIP
=
_data
.
recordList
[
0
].
ip
||
""
;
GlobalConfig
.
RecordServerPort
=
_data
.
recordList
[
0
].
port
||
""
;
//GlobalConfig.RecordServerIP = _data.recordList[0].ip || "";
//GlobalConfig.RecordServerPort = _data.recordList[0].port || "";
let
index
=
parseInt
(
Math
.
random
()
*
_data
.
recordList
.
length
);
GlobalConfig
.
RecordServerIP
=
_data
.
recordList
[
index
].
ip
||
""
;
GlobalConfig
.
RecordServerPort
=
_data
.
recordList
[
index
].
port
||
""
;
loger
.
log
(
'初始->RECORD->.'
,
GlobalConfig
.
RecordServerIP
,
GlobalConfig
.
RecordServerPort
);
}
}
...
...
@@ -517,7 +525,7 @@ export default class MessageEntrance extends Emiter {
loger
.
log
(
"开启录制回放流程"
);
_recordPlayback
.
readyRecordPlay
();
}
else
{
loger
.
warn
(
"开启录制回放流程失败
,
还未创建模块"
);
loger
.
warn
(
"开启录制回放流程失败
->
还未创建模块"
);
}
}
else
{
//根据用户的userIp获取信息,选点
...
...
@@ -554,18 +562,20 @@ export default class MessageEntrance extends Emiter {
this
.
_getFastestMsServer
(
function
(
_data
)
{
loger
.
log
(
"MS选点结束->"
,
_data
);
if
(
_data
&&
_data
.
ip
)
{
GlobalConfig
.
MSServerIP
=
_data
.
ip
;
GlobalConfig
.
MSServerPort
=
_data
.
port
;
GlobalConfig
.
MSServerIP
=
_data
.
ip
||
""
;
GlobalConfig
.
MSServerPort
=
_data
.
port
||
""
;
}
loger
.
log
(
"当前使用的MS->"
,
GlobalConfig
.
MSServerIP
,
GlobalConfig
.
MSServerPort
);
_this
.
isGetFastestMcuCallback
=
true
;
_this
.
_startConnectMCU
();
});
this
.
_getFastestMcuServer
(
function
(
_data
)
{
loger
.
log
(
"MCU选点结束->"
,
_data
);
if
(
_data
&&
_data
.
ip
)
{
GlobalConfig
.
MCUServerIP
=
_data
.
ip
;
GlobalConfig
.
MCUServerPort
=
_data
.
port
;
GlobalConfig
.
MCUServerIP
=
_data
.
ip
||
""
;
GlobalConfig
.
MCUServerPort
=
_data
.
port
||
""
;
}
loger
.
log
(
"当前使用的MCU->"
,
GlobalConfig
.
MCUServerIP
,
GlobalConfig
.
MCUServerPort
);
_this
.
isGetFastestMsCallback
=
true
;
_this
.
_startConnectMCU
();
});
...
...
@@ -649,7 +659,7 @@ export default class MessageEntrance extends Emiter {
loger
.
error
(
"不能保存课堂数据"
,
GlobalConfig
.
getCurrentStatus
());
}
}
else
{
loger
.
log
(
"没有保存课堂状态信息的权限
isHost"
,
GlobalConfig
.
isHost
);
loger
.
log
(
"没有保存课堂状态信息的权限
->身份"
,
GlobalConfig
.
userRole
);
}
}
...
...
@@ -666,7 +676,7 @@ export default class MessageEntrance extends Emiter {
//Sass校验流程结束之后,开始加入MCU
_joinMCU
()
{
loger
.
log
(
'加入
底层MCU课堂
.'
);
loger
.
log
(
'加入
课堂->
.'
);
if
(
_mcu
)
{
_mcu
.
joinMCU
(
GlobalConfig
.
getClassInfo
());
}
...
...
@@ -728,7 +738,7 @@ export default class MessageEntrance extends Emiter {
joinClassSuccessCallBackData
.
gop
=
GlobalConfig
.
gop
;
joinClassSuccessCallBackData
.
videoQuality
=
GlobalConfig
.
videoQuality
;
loger
.
log
(
'加入课堂成功'
);
loger
.
log
(
'加入课堂成功
->
'
);
loger
.
log
(
joinClassSuccessCallBackData
);
//加入课堂成功,广播消息
...
...
@@ -736,30 +746,56 @@ export default class MessageEntrance extends Emiter {
}
//切换MCU
_changeMcuIpHandler
(){
if
(
GlobalConfig
.
isRecordPlayBack
){
_changeMcuIpHandler
()
{
if
(
GlobalConfig
.
isRecordPlayBack
)
{
//录制回放不做操作
return
;
}
loger
.
log
(
'MCU->动态选点'
);
let
_this
=
this
;
let
_this
=
this
;
this
.
_getFastestMcuServer
(
function
(
_data
)
{
loger
.
log
(
"MCU选点结束->"
,
_data
);
if
(
_data
&&
_data
.
ip
)
{
GlobalConfig
.
MCUServerIP
=
_data
.
ip
;
GlobalConfig
.
MCUServerPort
=
_data
.
port
;
}
else
{
GlobalConfig
.
MCUServerIP
=
_data
.
ip
||
""
;
GlobalConfig
.
MCUServerPort
=
_data
.
port
||
""
;
}
else
{
//随机选择一个
if
(
GlobalConfig
.
mcuList
&&
GlobalConfig
.
mcuList
.
length
>
0
)
{
if
(
GlobalConfig
.
mcuList
&&
GlobalConfig
.
mcuList
.
length
>
0
)
{
let
index
=
parseInt
(
Math
.
random
()
*
GlobalConfig
.
mcuList
.
length
);
GlobalConfig
.
DOCServerIP
=
GlobalConfig
.
mcuList
[
index
].
ip
||
""
;
GlobalConfig
.
DOCServerPort
=
GlobalConfig
.
mcuList
[
index
].
port
||
""
;
GlobalConfig
.
MCUServerIP
=
GlobalConfig
.
mcuList
[
index
].
ip
||
""
;
GlobalConfig
.
MCUServerPort
=
GlobalConfig
.
mcuList
[
index
].
port
||
""
;
}
}
loger
.
log
(
'MCU->切换->'
,
GlobalConfig
.
MCUServerIP
,
GlobalConfig
.
MCUServerPort
);
});
}
//切换MS
_changeMsIpHandler
()
{
if
(
GlobalConfig
.
isRecordPlayBack
)
{
//录制回放不做操作
return
;
}
loger
.
log
(
'MS->动态选点'
);
let
_this
=
this
;
this
.
_getFastestMsServer
(
function
(
_data
)
{
loger
.
log
(
"MS选点结束->"
,
_data
);
if
(
_data
&&
_data
.
ip
)
{
GlobalConfig
.
MSServerIP
=
_data
.
ip
||
""
;
GlobalConfig
.
MSServerPort
=
_data
.
port
||
""
;
}
else
{
//随机选择一个
if
(
GlobalConfig
.
msList
&&
GlobalConfig
.
msList
.
length
>
0
)
{
let
index
=
parseInt
(
Math
.
random
()
*
GlobalConfig
.
msList
.
length
);
GlobalConfig
.
MSServerIP
=
GlobalConfig
.
msList
[
index
].
ip
||
""
;
GlobalConfig
.
MSServerPort
=
GlobalConfig
.
msList
[
index
].
port
||
""
;
}
}
loger
.
log
(
'M
CU->切换->'
,
GlobalConfig
.
DOCServerIP
,
GlobalConfig
.
DOCServerPort
);
loger
.
log
(
'M
S->切换->'
,
GlobalConfig
.
MSServerIP
,
GlobalConfig
.
MSServerPort
);
});
}
//Sass删除文档数据
_sassDeleteDocument
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
...
...
@@ -769,17 +805,17 @@ export default class MessageEntrance extends Emiter {
//判断传入的参数是否存在
if
(
_param
==
null
||
EngineUtils
.
isEmptyObject
(
_param
))
{
loger
.
error
(
'
sassDeleteDocument失败,
参数错误'
,
_param
);
loger
.
error
(
'
删除文档失败->
参数错误'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_DOC_DELETE_FAILED_PARAM
);
return
;
}
//判断必要的参数字段值
if
(
_param
.
itemIdx
==
null
||
isNaN
(
_param
.
itemIdx
)
||
_param
.
docId
==
null
||
_param
.
docId
==
""
)
{
loger
.
error
(
'
sassDeleteDocument失败
'
,
_param
);
loger
.
error
(
'
删除文档失败->
'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_DOC_DELETE_FAILED_PARAM
);
return
;
}
loger
.
log
(
'
_sassDeleteDocument
'
,
_param
);
loger
.
log
(
'
删除文档->
'
,
_param
);
if
(
_sass
)
{
_sass
.
sassDeleteDocument
(
_param
);
...
...
@@ -798,7 +834,7 @@ export default class MessageEntrance extends Emiter {
//Sass删除文档成功之后,同步删除MCU数据
_sassDeleteDocumentSuccess
(
_param
)
{
loger
.
log
(
'
sassDeleteDocumentSuccess
'
,
_param
);
loger
.
log
(
'
删除文档成功->
'
,
_param
);
this
.
_sendDocumentDelete
(
_param
);
}
...
...
@@ -872,7 +908,7 @@ export default class MessageEntrance extends Emiter {
return
;
}
if
(
_messageInfo
===
null
||
EngineUtils
.
isEmptyObject
(
_messageInfo
))
{
loger
.
log
(
'
sendChatMsg 传递的参数不对
'
,
_messageInfo
);
loger
.
log
(
'
发送聊天消息失败->参数错误
'
,
_messageInfo
);
return
;
}
if
(
_chat_ape
)
{
...
...
@@ -1137,7 +1173,7 @@ export default class MessageEntrance extends Emiter {
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
;
}
loger
.
log
(
'Doc UpdateId ->'
);
//
loger.log('Doc UpdateId ->');
//loger.log(_data);
if
(
_whiteboard_ape
)
{
_whiteboard_ape
.
docUpdateHandler
(
_data
);
...
...
@@ -1183,13 +1219,13 @@ export default class MessageEntrance extends Emiter {
_initRecordPlayback
(
_param
)
{
//{"classId":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0}
if
(
_param
==
null
)
{
loger
.
error
(
'录制回放初始化失败
,
参数错误'
);
loger
.
error
(
'录制回放初始化失败
->
参数错误'
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_INIT_RECORD_PLAY_BACK_FAILED
);
return
;
}
//判断必要的参数字段值
if
(
_param
.
classId
==
null
||
isNaN
(
_param
.
classId
)
||
_param
.
portal
==
null
||
_param
.
portal
==
""
)
{
loger
.
error
(
'录制回放初始化失败'
,
_param
);
loger
.
error
(
'录制回放初始化失败
->
'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_INIT_RECORD_PLAY_BACK_FAILED
);
return
;
}
...
...
@@ -1239,7 +1275,7 @@ export default class MessageEntrance extends Emiter {
//录制回放状态更新
_recordPlaybackClearDataHandler
(
_param
)
{
loger
.
log
(
"
_recordPlaybackClearDataHandler
->"
)
loger
.
log
(
"
录制回放状态更新
->"
)
if
(
_doc_ape
)
{
_doc_ape
.
clearData
();
}
...
...
src/EverSocket.js
查看文件 @
9f3d40e
...
...
@@ -15,7 +15,7 @@
import
Emiter
from
'Emiter'
;
import
Loger
from
'Loger'
;
let
loger
=
Loger
.
getLoger
(
'EverSocket'
);
const
MCU_MAX_RECONNECTION
=
5
;
//最多重连次数
const
MCU_MAX_RECONNECTION
=
4
;
//最多重连次数
class
EverSocket
extends
Emiter
{
constructor
()
{
super
();
...
...
@@ -84,7 +84,7 @@ class EverSocket extends Emiter {
}
this
.
reConnectionTimeout
=
window
.
setTimeout
(()
=>
{
loger
.
log
(
'WebSocket重新建立
.'
);
loger
.
log
(
'WebSocket重新建立
->'
,
this
.
reConnectionCounter
);
window
.
clearTimeout
(
this
.
reConnectionTimeout
);
this
.
_newConnection
();
},
EverSocket
.
RECONN_INTERVAL
);
...
...
src/MessageTypes.js
查看文件 @
9f3d40e
...
...
@@ -159,8 +159,8 @@ MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_JOIN_CONFILICT]="已经在其它
MessageTypes
.
ErrorReson
[
MessageTypes
.
ERR_CLASS_KICK_OUT
]
=
"有相同身份的人员加入课堂,自己被踢出课堂"
;
MessageTypes
.
ErrorReson
[
MessageTypes
.
ERR_GET_CLASS_DETAIL
]
=
"获取classDetail失败"
;
MessageTypes
.
ErrorReson
[
MessageTypes
.
ERR_GET_CLASS_PARAML
]
=
"获取ClassParam失败"
;
MessageTypes
.
ErrorReson
[
MessageTypes
.
ERR_GET_CLASS_DETAIL
]
=
"获取课堂基本信息失败"
;
MessageTypes
.
ErrorReson
[
MessageTypes
.
ERR_GET_CLASS_PARAML
]
=
"获取课堂详细信息失败"
;
//APE
MessageTypes
.
ErrorReson
[
MessageTypes
.
ERR_APE_SEND_FAILED_NO_JOIN
]
=
"APE在sdk为初始化或未加入课堂之前调用发送数据接口"
;
...
...
请
注册
或
登录
后发表评论