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
李勇
2017-02-09 13:45:24 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
82030902c830160aad1165f0b04fc611451a98ca
82030902
1 parent
6740de7d
1.sass获取课堂校验信息返回参数中是否需要密码判断的是学生的,老师默认需要密码(SASS没有判断老师的)
2.调整了Sass登陆的接口(区分老师和学生登陆) 3.修改文档模块的pdu结构
隐藏空白字符变更
内嵌
并排对比
正在显示
9 个修改的文件
包含
171 行增加
和
38 行删除
dist/McuClient.js
src/EngineEntrance.js
src/GlobalConfig.js
src/MessageTypes.js
src/Sass.js
src/apes/Ape.js
src/apes/ChatApe.js
src/apes/DocApe.js
src/pdus/pro.js
dist/McuClient.js
0 → 100644
查看文件 @
8203090
此 diff 太大无法显示。
src/EngineEntrance.js
查看文件 @
8203090
...
...
@@ -128,6 +128,7 @@ export default class MessageEntrance extends Emiter {
_mcuErrorHandler
(
_data
){
if
(
_mcuErrorCallBackFun
){
let
errorMessage
=
{
"code"
:
_data
,
"reson"
:
""
};
loger
.
log
(
"MCU_ERROR"
,
errorMessage
);
_mcuErrorCallBackFun
(
errorMessage
);
}
}
...
...
@@ -206,18 +207,38 @@ export default class MessageEntrance extends Emiter {
// 用meetingNumber向SASS平台获取入会验证信息成功
_sassInitSuccessHandler
(
_data
)
{
//{"siteId":"h5test","passwordRequired":true,"md5":"de399d5540b3da2fbc1eb0a770d4fd66","code":0,"msType":1}
if
(
_data
){
GlobalConfig
.
md5
=
_data
.
md5
||
""
;
//这个暂时用假数据,后台接口写完就有数据了
GlobalConfig
.
msType
=
_data
.
msType
||
1
;
GlobalConfig
.
passwordRequired
=
_data
.
passwordRequired
||
false
;
GlobalConfig
.
siteId
=
_data
.
siteId
;
//储存数据
GlobalConfig
.
md5
=
_data
.
md5
||
""
;
//这个暂时用假数据,后台接口写完就有数据了
GlobalConfig
.
msType
=
_data
.
msType
||
1
;
GlobalConfig
.
siteId
=
_data
.
siteId
||
""
;
GlobalConfig
.
classType
=
_data
.
classType
||
""
;
//host默认需要密码,Sass服务器只判断学生是否需要密码,没有判断老师的
if
(
GlobalConfig
.
userRole
==
"host"
){
GlobalConfig
.
passwordRequired
=
true
;
}
else
{
GlobalConfig
.
passwordRequired
=
_data
.
passwordRequired
||
false
;
}
loger
.
log
(
'向SASS平台获取入会验证信息成功.'
);
this
.
_emit
(
MessageTypes
.
CLASS_INIT_SUCCESS
,
_data
);
//this._emit(MessageTypes.CLASS_INIT_SUCCESS,initSuccessCallBackData);
//设置当前的会议状态
GlobalConfig
.
setCurrentStatus
(
GlobalConfig
.
statusCode_1
);
if
(
_initSuccessCallBackFun
){
_initSuccessCallBackFun
(
_data
);
//返回给客户端初始化成功的数据
let
initSuccessCallBackData
=
{};
initSuccessCallBackData
.
siteId
=
GlobalConfig
.
siteId
;
initSuccessCallBackData
.
meetingNumber
=
GlobalConfig
.
confId
;
initSuccessCallBackData
.
userRole
=
GlobalConfig
.
userRole
;
initSuccessCallBackData
.
userId
=
GlobalConfig
.
userId
;
initSuccessCallBackData
.
passwordRequired
=
GlobalConfig
.
passwordRequired
;
initSuccessCallBackData
.
classType
=
GlobalConfig
.
classType
;
_initSuccessCallBackFun
(
initSuccessCallBackData
);
}
}
...
...
@@ -234,11 +255,35 @@ export default class MessageEntrance extends Emiter {
//使用固定的假数据
_setDebugData
(
_data
){
loger
.
log
(
"setDebugData "
+
_data
);
GlobalConfig
.
setDebugData
(
_data
);
//
GlobalConfig.setDebugData(_data);
}
// 通过SASS平台验证
_sassVerifySuccessHandler
(
_data
)
{
//返回值
/* flag 数值型 无 True:成功
Flag:失败
h5_mcu_list 字符串 H5muc列表
maxVideoChannels 数值型 最大视频路数
maxAudioChannels 数值型 最大音频路数
h5Module 数值型 H5开关
ms 字符串 Ms列表
mcu 字符串 Mcu列表
rs 字符串 Rs列表
doc 字符串 Doc列表*/
GlobalConfig
.
doc
=
_data
.
doc
;
GlobalConfig
.
h5_mcu_list
=
_data
.
h5_mcu_list
;
GlobalConfig
.
h5Module
=
_data
.
h5Module
;
GlobalConfig
.
maxAudioChannels
=
_data
.
maxAudioChannels
;
GlobalConfig
.
maxVideoChannels
=
_data
.
maxVideoChannels
;
GlobalConfig
.
mcu
=
_data
.
mcu
;
GlobalConfig
.
ms
=
_data
.
ms
;
GlobalConfig
.
record
=
_data
.
record
;
GlobalConfig
.
rs
=
_data
.
rs
;
loger
.
log
(
'加入底层MCU会议.'
);
if
(
_mcu
){
_mcu
.
joinMCU
(
GlobalConfig
.
getConfInfo
());
...
...
@@ -268,8 +313,75 @@ export default class MessageEntrance extends Emiter {
_sass
.
getClassDetail
();
//会议信息
_sass
.
getMeetingParam
();
//会议参数大全
}
//储存数据
GlobalConfig
.
MCUServerIP
=
_data
.
MCUServerIP
;
GlobalConfig
.
MCUServerPort
=
_data
.
MCUServerPort
;
GlobalConfig
.
classRole
=
_data
.
classRole
;
GlobalConfig
.
confId
=
_data
.
confId
;
GlobalConfig
.
h5Module
=
_data
.
h5Module
;
GlobalConfig
.
isHost
=
_data
.
isHost
;
GlobalConfig
.
maxAudioChannels
=
_data
.
maxAudioChannels
;
GlobalConfig
.
maxVideoChannels
=
_data
.
maxVideoChannels
;
GlobalConfig
.
maxMediaChannels
=
_data
.
maxMediaChannels
;
GlobalConfig
.
mcuConfInfo
=
_data
.
mcuConfInfo
;
GlobalConfig
.
mcuDelay
=
_data
.
mcuDelay
;
GlobalConfig
.
md5
=
_data
.
md5
;
GlobalConfig
.
msType
=
_data
.
msType
;
GlobalConfig
.
nodeId
=
_data
.
nodeId
;
GlobalConfig
.
password
=
_data
.
password
;
//GlobalConfig.passwordRequired 老师的默认是true
GlobalConfig
.
portal
=
_data
.
portal
;
GlobalConfig
.
role
=
_data
.
role
;
GlobalConfig
.
siteId
=
_data
.
siteId
;
GlobalConfig
.
topNodeID
=
_data
.
topNodeID
;
GlobalConfig
.
userId
=
_data
.
userId
;
GlobalConfig
.
userName
=
_data
.
userName
;
GlobalConfig
.
userRole
=
_data
.
userRole
;
GlobalConfig
.
userType
=
_data
.
userType
;
//返回给客户数据
if
(
_joinClassSuccessCallBackFun
){
_joinClassSuccessCallBackFun
(
_data
);
//返回给客户端初始化成功的数据
let
initSuccessCallBackData
=
{};
//GlobalConfig.MCUServerIP=_data.MCUServerIP;
// GlobalConfig.MCUServerPort=_data.MCUServerPort;
initSuccessCallBackData
.
doc
=
GlobalConfig
.
doc
;
//文档服务器地址
initSuccessCallBackData
.
classRole
=
GlobalConfig
.
classRole
;
initSuccessCallBackData
.
confId
=
GlobalConfig
.
confId
;
initSuccessCallBackData
.
h5Module
=
GlobalConfig
.
h5Module
;
initSuccessCallBackData
.
isHost
=
GlobalConfig
.
isHost
;
initSuccessCallBackData
.
maxAudioChannels
=
GlobalConfig
.
maxAudioChannels
;
initSuccessCallBackData
.
maxVideoChannels
=
GlobalConfig
.
maxVideoChannels
;
initSuccessCallBackData
.
maxMediaChannels
=
GlobalConfig
.
maxMediaChannels
;
// GlobalConfig.mcuConfInfo=_data.mcuConfInfo;
initSuccessCallBackData
.
mcuDelay
=
GlobalConfig
.
mcuDelay
;
//GlobalConfig.md5=_data.md5;
initSuccessCallBackData
.
msType
=
GlobalConfig
.
msType
;
initSuccessCallBackData
.
nodeId
=
GlobalConfig
.
nodeId
;
initSuccessCallBackData
.
password
=
GlobalConfig
.
password
;
initSuccessCallBackData
.
passwordRequired
=
GlobalConfig
.
passwordRequired
;
// 老师的默认是true
//GlobalConfig.passwordRequired 老师的默认是true
//GlobalConfig.portal=_data.portal;
initSuccessCallBackData
.
role
=
GlobalConfig
.
role
;
initSuccessCallBackData
.
siteId
=
GlobalConfig
.
siteId
;
initSuccessCallBackData
.
topNodeID
=
GlobalConfig
.
topNodeID
;
initSuccessCallBackData
.
userId
=
GlobalConfig
.
userId
;
initSuccessCallBackData
.
userName
=
GlobalConfig
.
userName
;
initSuccessCallBackData
.
userRole
=
GlobalConfig
.
userRole
;
initSuccessCallBackData
.
userType
=
GlobalConfig
.
userType
;
initSuccessCallBackData
.
siteId
=
GlobalConfig
.
siteId
;
initSuccessCallBackData
.
meetingNumber
=
GlobalConfig
.
confId
;
initSuccessCallBackData
.
userRole
=
GlobalConfig
.
userRole
;
initSuccessCallBackData
.
userId
=
GlobalConfig
.
userId
;
initSuccessCallBackData
.
passwordRequired
=
GlobalConfig
.
passwordRequired
;
initSuccessCallBackData
.
classType
=
GlobalConfig
.
classType
;
loger
.
log
(
'加入会议成功'
,
initSuccessCallBackData
);
_joinClassSuccessCallBackFun
(
initSuccessCallBackData
);
}
}
//// MCU 会议失败
...
...
src/GlobalConfig.js
查看文件 @
8203090
...
...
@@ -78,6 +78,7 @@ GlobalConfig.userRole="normal";
GlobalConfig
.
role
=
1
;
GlobalConfig
.
isHost
=
false
;
GlobalConfig
.
classRole
=
0
;
GlobalConfig
.
classType
=
0
;
//课堂类型,直播或 1V1互动
GlobalConfig
.
userId
=
0
;
GlobalConfig
.
userName
=
""
;
GlobalConfig
.
password
=
""
;
...
...
@@ -91,6 +92,7 @@ GlobalConfig.portal="112.126.80.182:80";
GlobalConfig
.
ip
=
"112.126.80.182"
;
GlobalConfig
.
port
=
"80"
;
GlobalConfig
.
MCUServerIP
=
"114.215.195.70"
;
GlobalConfig
.
doc
=
""
;
GlobalConfig
.
MCUServerPort
=
9003
;
GlobalConfig
.
maxVideoChannels
=
1
;
GlobalConfig
.
maxAudioChannels
=
1
;
...
...
src/MessageTypes.js
查看文件 @
8203090
...
...
@@ -17,7 +17,7 @@ function MessageTypes() {}
//--------------------事件相关的定义--------------------------------------
//初始化相关事件定义
MessageTypes
.
CLASS_INIT_SUCCESS
=
'class.init.success'
;
//初始化成功
//
MessageTypes.CLASS_INIT_SUCCESS='class.init.success';//初始化成功
//MessageTypes.CLASS_INIT_FAILED='class.init.failed';//初始化失败
//加入会议相关事件定义
...
...
src/Sass.js
查看文件 @
8203090
...
...
@@ -91,8 +91,23 @@ class Sass extends Emiter {
// 入会密码校验
sendPWDChecking
()
{
let
url
=
`
http
:
//${confInfo.portal}/3m/getCheckMeetinig.do?siteId=${confInfo.siteId}&classId=${confInfo.confId}&password=${confInfo.password}`;
//
let url = `http://${confInfo.portal}/3m/getCheckMeetinig.do?siteId=${confInfo.siteId}&classId=${confInfo.confId}&password=${confInfo.password}`;
/*
/3m/api/meeting/signIn.do
siteId 站点号
classId 课堂号(meetingNumber)
isTeacher 是否是老师:1 是 0 否
password 输入的密码
// 请求格式 http://112.126.80.182/3m/api/meeting/signIn.do?siteId=h5test&classId=526661904&password=111111&isTeacher=0
*/
//判断是否是老师
let
isTeacher
=
0
;
if
(
confInfo
.
userRole
==
"host"
){
isTeacher
=
1
}
let
url
=
`
http
:
//${confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.confId}&isTeacher=${isTeacher}&password=${confInfo.password}`;
loger
.
log
(
'会议密码校验'
,
url
);
fetch
(
url
,
{
timeout
:
5000
...
...
@@ -107,17 +122,18 @@ class Sass extends Emiter {
}
})
.
then
(
ret
=>
{
if
(
ret
===
'false'
)
{
let
rectObj
=
JSON
.
parse
(
ret
);
if
(
rectObj
.
flag
===
'false'
||
rectObj
.
flag
===
false
)
{
loger
.
error
(
`会议密码校验
-
失败
.
`
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_CLASS_PASSWORD_WRONG
);
return
;
}
if
(
re
t
===
'true'
)
{
if
(
re
ctObj
.
flag
===
'true'
||
rectObj
.
flag
===
true
)
{
loger
.
log
(
`会议密码校验
-
成功
.
`
);
this
.
sendMD5Checking
();
return
;
}
loger
.
error
(
`会议密码校验
-
协议异常
.
`
);
loger
.
error
(
`会议密码校验
-
协议异常
.
`
,
rectObj
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_CLASS_JOIN_PROTOCOL
);
})
.
catch
(
err
=>
{
...
...
@@ -159,8 +175,7 @@ class Sass extends Emiter {
GlobalConfig
.
maxVideoChannels
=
confInfo
.
maxVideoChannels
;
GlobalConfig
.
maxAudioChannels
=
confInfo
.
maxAudioChannels
;
GlobalConfig
.
maxMediaChannels
=
confInfo
.
maxMediaChannels
;
loger
.
log
(
'H5Sass校验完成'
);
console
.
log
(
ret
);
loger
.
log
(
'H5Sass校验完成'
,
ret
);
this
.
_emit
(
Sass
.
SUCCESS
,
ret
);
}
else
{
loger
.
log
(
'H5SassMD5校验-失败.'
);
...
...
src/apes/Ape.js
查看文件 @
8203090
...
...
@@ -296,7 +296,7 @@ export default class Ape extends Emiter {
send
(
appPdu
)
{
loger
.
log
(
'Ape发送数据NORMAL PDU'
,
appPdu
);
loger
.
log
(
'当前的状态============'
,
GlobalConfig
.
getCurrentStatus
().
code
);
//
loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
if
(
GlobalConfig
.
getCurrentStatus
().
code
==
0
||
GlobalConfig
.
getCurrentStatus
().
code
==
1
){
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_SEND_FAILED_NO_JOIN
);
return
;
...
...
@@ -321,7 +321,7 @@ export default class Ape extends Emiter {
// 发送当前APE(session uniform包)
sendUniform
(
appPdu
,
top
)
{
loger
.
log
(
'Ape发送数据UNIFORM PDU'
,
appPdu
);
loger
.
log
(
'当前的状态============'
,
GlobalConfig
.
getCurrentStatus
().
code
);
//
loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
if
(
GlobalConfig
.
getCurrentStatus
().
code
==
0
||
GlobalConfig
.
getCurrentStatus
().
code
==
1
){
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_SEND_FAILED_NO_JOIN
);
return
;
...
...
@@ -345,7 +345,7 @@ export default class Ape extends Emiter {
sendChatUniform
(
appPdu
,
top
)
{
loger
.
log
(
'Ape发送数据UNIFORM PDU'
,
appPdu
);
loger
.
log
(
'当前的状态============'
,
GlobalConfig
.
getCurrentStatus
().
code
);
//
loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
if
(
GlobalConfig
.
getCurrentStatus
().
code
==
0
||
GlobalConfig
.
getCurrentStatus
().
code
==
1
){
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_SEND_FAILED_NO_JOIN
);
return
;
...
...
src/apes/ChatApe.js
查看文件 @
8203090
...
...
@@ -58,7 +58,7 @@ class ChatApe extends Ape {
chatSendPdu
.
userData
=
this
.
_rCArrayBufferUtil
.
strToUint8Array
(
"h5"
+
_messageInfo
.
message
);
chatSendPdu
.
fromName
=
this
.
_rCArrayBufferUtil
.
strToUint8Array
(
"h5"
+
this
.
_confInfo
.
userName
);
chatSendPdu
.
fromRole
=
this
.
_confInfo
.
classRole
;
chatSendPdu
.
fromRole
=
this
.
_confInfo
.
classRole
;
//0 普通人 1 教师
chatSendPdu
.
isPublic
=
true
;
// if (!(chatSendPdu.isPublic || 0 === chatSendPdu.peer)) {
if
(
!
chatSendPdu
&&
0
!=
chatSendPdu
.
peer
)
{
...
...
src/apes/DocApe.js
查看文件 @
8203090
...
...
@@ -208,21 +208,22 @@ class DocApe extends Ape {
}
/* message RCDocSendDataModelPdu {
required uint32 item_idx=1;//唯一标识
required uint32 owner=2;
optional uint32 from=3;
optional uint32 cur_page_no=4;
optional uint32 page_num =5;
optional string file_type=6;
optional string doc_type=7;
optional string relative_url=8;//文档相对地址
optional string url =9;//文档地址
optional uint32 cur_V=10;
optional uint32 cur_H=11;
optional uint32 scale=12;
optional bool visible=13;
optional uint32 action=14;//0,无操作, 1翻页、2.显示/隐藏
optional string db_id=15;//文档在服务器数据库中的唯一id
required uint32 item_idx=1;//唯一标识
required uint32 owner=2;
optional uint32 from=3;
optional uint32 cur_page_no=4;
optional uint32 page_num =5;
optional string file_type=6;
optional string doc_type=7;
optional string relative_url=8;//文档相对地址
optional string url =9;//文档地址
optional uint32 cur_V=10;
optional uint32 cur_H=11;
optional uint32 scale=12;
optional bool visible=13;
optional uint32 action=14;//0,无操作, 1翻页、2.显示/隐藏
optional string doc_id=15;//文档在服务器数据库中的唯一id
optional string file_name=16;//文档的名字
}*/
//判断type类型,根据type设置不同的参数
...
...
@@ -241,8 +242,9 @@ class DocApe extends Ape {
docModelPdu
.
scale
=
_param
.
scale
||
1
;
docModelPdu
.
visible
=
_param
.
visible
||
false
;
docModelPdu
.
action
=
_param
.
action
||
0
;
//0,无操作, 1翻页、2.显示/隐藏
docModelPdu
.
dbId
=
_param
.
dbId
||
""
;
//文档在服务器数据库中的唯一id
docModelPdu
.
docId
=
_param
.
docId
||
""
;
//文档在服务器数据库中的唯一id
docModelPdu
.
fileName
=
_param
.
fileName
||
"doc_"
+
_itemIdx
;
//文档的名字
docModelPdu
.
dynamicTS
=
_param
.
dynamicTS
||
"0"
;
//文档上传后返回值中的字段dynamicTransferStatic
console
.
log
(
docModelPdu
);
return
docModelPdu
;
}
...
...
src/pdus/pro.js
查看文件 @
8203090
...
...
@@ -728,7 +728,9 @@ message RCDocSendDataModelPdu {
optional
uint32
scale
=
12
;
optional
bool
visible
=
13
;
optional
uint32
action
=
14
;
//0,无操作, 1翻页、2.显示/隐藏
optional
string
db_id
=
15
;
//文档在服务器数据库中的唯一id
optional
string
doc_id
=
15
;
//文档在服务器数据库中的唯一id
optional
string
file_name
=
16
;
//文档的名字
optional
string
dynamic_TS
=
17
;
//"dynamicTransferStatic": "0"
}
message
RCGiftSendDataRequestPdu
{
optional
uint32
initiator
=
1
;
...
...
请
注册
或
登录
后发表评论