diff --git a/src/EngineEntrance.js b/src/EngineEntrance.js index d2bbde3..e1eaf3d 100644 --- a/src/EngineEntrance.js +++ b/src/EngineEntrance.js @@ -63,7 +63,7 @@ export default class MessageEntrance extends Emiter { super(); this.lastClassActiveTime=0;//最后一次课堂激活的时间戳 //sdk 信息 - GlobalConfig.sdkVersion = "v2.28.2.20171111"; + GlobalConfig.sdkVersion = "v2.29.5.20171114"; loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); console.log("sdkVersion:" + GlobalConfig.sdkVersion); //设置 @@ -2034,9 +2034,9 @@ export default class MessageEntrance extends Emiter { if (GlobalConfig.mcuListFinal && GlobalConfig.mcuListFinal.length > 0) { //还未开始选点之前随机选择一个 let index = parseInt(Math.random() * GlobalConfig.mcuListFinal.length); - if (!GlobalConfig.MCUServerIP) { + /* if (!GlobalConfig.MCUServerIP) { index = 0; - } + }*/ GlobalConfig.MCUServerIP = GlobalConfig.mcuListFinal[index].ip || ""; GlobalConfig.MCUServerPort = GlobalConfig.mcuListFinal[index].port || ""; } @@ -2548,6 +2548,8 @@ export default class MessageEntrance extends Emiter { loger.log("最后一次记录的时间->"+this.lastClassActiveTime,"当前时间:"+new Date().getTime(),"间隔:"+interval+"秒"); loger.log("文档加入频道成功->isHost=", GlobalConfig.isHost, "当前总人数:", GlobalConfig.rosterNumber, "sassDoclength=", GlobalConfig.docListPrepare.length); + + /* //20171114 服务端已经做了处理,客户端不需要再做判断 //如果当前课堂内只有自己或者离开上次课堂的时间大于8分钟,需要停止服务端的视频录制,设备不是H5 if(GlobalConfig.rosterNumber<=1&&interval>=(6*60)&&GlobalConfig.deviceType!=3){ setTimeout(()=>{ @@ -2558,8 +2560,7 @@ export default class MessageEntrance extends Emiter { this._mediaRecordControl({"status": WebRtcApe.RECORD_STATUS_2}); } },3000); - - } + }*/ //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 if (GlobalConfig.docListPrepare && GlobalConfig.docListPrepare.length > 0) { @@ -2755,10 +2756,10 @@ export default class MessageEntrance extends Emiter { //音乐共享模块加入频道成功,同步到MCU服务器上的数据 musicShareApeJoinChannelSuccess() { - loger.log("伴音MUSIC模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.musicListPrepare.length); + //loger.log("伴音MUSIC模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.musicListPrepare.length); //console.log("伴音MUSIC模块共享模数据->", GlobalConfig.musicListPrepare); //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 - if (GlobalConfig.isHost && GlobalConfig.musicListPrepare.length > 0) { + if (GlobalConfig.isHost && GlobalConfig.musicListPrepare.length > 0&&GlobalConfig.deviceType!=3) { for (let i = 0; i < GlobalConfig.musicListPrepare.length; i++) { let value = GlobalConfig.musicListPrepare[i]; if (value) { @@ -2786,10 +2787,10 @@ export default class MessageEntrance extends Emiter { //媒体共享模块加入频道成功,同步到MCU服务器上的数据 mediaShareApeJoinChannelSuccess() { - loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length); + //loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length); //console.log("媒体共享模数据->", GlobalConfig.sharedMediaList); //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 - if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) { + if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0&&GlobalConfig.deviceType!=3) { for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) { let value = GlobalConfig.sharedMediaList[i]; if (value) { @@ -3028,7 +3029,7 @@ export default class MessageEntrance extends Emiter { * 初始化webRtc * */ _initWebRtcSdk(_params, _callback) { - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { + if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2 || GlobalConfig.deviceType == 3) { loger.warn("移动端不需要处理初始化webRtc"); if (_callback) { _callback(); diff --git a/src/apes/ConferApe.js b/src/apes/ConferApe.js index dfd146e..2788775 100644 --- a/src/apes/ConferApe.js +++ b/src/apes/ConferApe.js @@ -73,7 +73,7 @@ class ConferApe extends Ape { item.nodeId = nodeInfoRecordPdu.nodeId; item.nodeData = nodeInfoRecordPdu.toArrayBuffer(); - let rosterUpdateItem = new pdu['RCRegistryRosterUpdateItemPdu']; + let rosterUpdateItem = new pdu['RCRegistryRosterInsertItemPdu']; rosterUpdateItem.type = pdu.RCPDU_REG_ROSTER_UPDATE_PDU; rosterUpdateItem.items.push(item); @@ -160,6 +160,11 @@ class ConferApe extends Ape { //更新角色数据 updateUserInfo() { + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5==true){ + //直播模式下H5不处理更新信息 + console.log("直播模式下H5不处理用户更新信息"); + return; + } let nodeInfoRecordPdu = this.getNodeInfo(); //loger.log('更新用户信息->', nodeInfoRecordPdu); let userDataPdu = new pdu['RCNodeInfoUserDataPdu']; @@ -202,7 +207,10 @@ class ConferApe extends Ape { } return; } - + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5){ + loger.warn("直播模式H5不能发送课堂控制消息"); + return; + } // to, message loger.log('发送课堂控制消息.', _messageInfo); @@ -300,7 +308,7 @@ class ConferApe extends Ape { checkHasRecordControl() { //loger.warn('检测是否有控制录制操作的权限', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus,"当前人数:"+this.rosterLen); //1.如果自己是老师或者当前课堂只有一个人 - if (GlobalConfig.isHost || this.rosterLen <= 1&&GlobalConfig.deviceType!=3) { + if (GlobalConfig.isHost || (this.rosterLen <= 1&&GlobalConfig.deviceType!=3)) { return true; } //2.如果自己不是老师,需要判断当前课堂内是否有老师,如果有老师就不做操作 @@ -610,7 +618,7 @@ class ConferApe extends Ape { //更新课堂信息 sendUpdaterClassStatusInfo(_param) { //{"actionType": 1,isStopAllPublishMedia:false} //actionType课堂状态 isStopAllPublishMedia是否停止当前的所有推流 - //loger.log('发送更新课堂信息->'); + //console.log('发送更新课堂信息->'); if (_param == null || EngineUtils.isEmptyObject(_param)) { loger.log('发送更新课堂信息->参数错误'); this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); diff --git a/src/apes/VideoApe.js b/src/apes/VideoApe.js index 0016dd1..9be89e9 100644 --- a/src/apes/VideoApe.js +++ b/src/apes/VideoApe.js @@ -424,6 +424,10 @@ class VideoApe extends Ape { this.sendTableUpdateHandler(channelInfo); //递归检查,800毫秒之后执行 + clearTimeout(this.releaseTimeId); + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5){ + return; + } this.releaseTimeId = setTimeout(function () { loger.warn(nodeId, "检查频道是否占用"); this._releaseNodeIdAllChannel(nodeId);