李勇

1.sass获取课堂校验信息返回参数中是否需要密码判断的是学生的,老师默认需要密码(SASS没有判断老师的)

2.调整了Sass登陆的接口(区分老师和学生登陆)
3.修改文档模块的pdu结构
此 diff 太大无法显示。
... ... @@ -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 会议失败
... ...
... ... @@ -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;
... ...
... ... @@ -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';//初始化失败
//加入会议相关事件定义
... ...
... ... @@ -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 (ret === 'true') {
if (rectObj.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校验-失败.');
... ...
... ... @@ -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;
... ...
... ... @@ -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) {
... ...
... ... @@ -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;
}
... ...
... ... @@ -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;
... ...