李勇

1.直播模式下H5不再处理用户数据更新的消息和频道释放的递归

@@ -63,7 +63,7 @@ export default class MessageEntrance extends Emiter { @@ -63,7 +63,7 @@ export default class MessageEntrance extends Emiter {
63 super(); 63 super();
64 this.lastClassActiveTime=0;//最后一次课堂激活的时间戳 64 this.lastClassActiveTime=0;//最后一次课堂激活的时间戳
65 //sdk 信息 65 //sdk 信息
66 - GlobalConfig.sdkVersion = "v2.28.2.20171111"; 66 + GlobalConfig.sdkVersion = "v2.29.5.20171114";
67 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); 67 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
68 console.log("sdkVersion:" + GlobalConfig.sdkVersion); 68 console.log("sdkVersion:" + GlobalConfig.sdkVersion);
69 //设置 69 //设置
@@ -2034,9 +2034,9 @@ export default class MessageEntrance extends Emiter { @@ -2034,9 +2034,9 @@ export default class MessageEntrance extends Emiter {
2034 if (GlobalConfig.mcuListFinal && GlobalConfig.mcuListFinal.length > 0) { 2034 if (GlobalConfig.mcuListFinal && GlobalConfig.mcuListFinal.length > 0) {
2035 //还未开始选点之前随机选择一个 2035 //还未开始选点之前随机选择一个
2036 let index = parseInt(Math.random() * GlobalConfig.mcuListFinal.length); 2036 let index = parseInt(Math.random() * GlobalConfig.mcuListFinal.length);
2037 - if (!GlobalConfig.MCUServerIP) { 2037 + /* if (!GlobalConfig.MCUServerIP) {
2038 index = 0; 2038 index = 0;
2039 - } 2039 + }*/
2040 GlobalConfig.MCUServerIP = GlobalConfig.mcuListFinal[index].ip || ""; 2040 GlobalConfig.MCUServerIP = GlobalConfig.mcuListFinal[index].ip || "";
2041 GlobalConfig.MCUServerPort = GlobalConfig.mcuListFinal[index].port || ""; 2041 GlobalConfig.MCUServerPort = GlobalConfig.mcuListFinal[index].port || "";
2042 } 2042 }
@@ -2548,6 +2548,8 @@ export default class MessageEntrance extends Emiter { @@ -2548,6 +2548,8 @@ export default class MessageEntrance extends Emiter {
2548 loger.log("最后一次记录的时间->"+this.lastClassActiveTime,"当前时间:"+new Date().getTime(),"间隔:"+interval+"秒"); 2548 loger.log("最后一次记录的时间->"+this.lastClassActiveTime,"当前时间:"+new Date().getTime(),"间隔:"+interval+"秒");
2549 loger.log("文档加入频道成功->isHost=", GlobalConfig.isHost, "当前总人数:", GlobalConfig.rosterNumber, "sassDoclength=", GlobalConfig.docListPrepare.length); 2549 loger.log("文档加入频道成功->isHost=", GlobalConfig.isHost, "当前总人数:", GlobalConfig.rosterNumber, "sassDoclength=", GlobalConfig.docListPrepare.length);
2550 2550
  2551 +
  2552 + /* //20171114 服务端已经做了处理,客户端不需要再做判断
2551 //如果当前课堂内只有自己或者离开上次课堂的时间大于8分钟,需要停止服务端的视频录制,设备不是H5 2553 //如果当前课堂内只有自己或者离开上次课堂的时间大于8分钟,需要停止服务端的视频录制,设备不是H5
2552 if(GlobalConfig.rosterNumber<=1&&interval>=(6*60)&&GlobalConfig.deviceType!=3){ 2554 if(GlobalConfig.rosterNumber<=1&&interval>=(6*60)&&GlobalConfig.deviceType!=3){
2553 setTimeout(()=>{ 2555 setTimeout(()=>{
@@ -2558,8 +2560,7 @@ export default class MessageEntrance extends Emiter { @@ -2558,8 +2560,7 @@ export default class MessageEntrance extends Emiter {
2558 this._mediaRecordControl({"status": WebRtcApe.RECORD_STATUS_2}); 2560 this._mediaRecordControl({"status": WebRtcApe.RECORD_STATUS_2});
2559 } 2561 }
2560 },3000); 2562 },3000);
2561 -  
2562 - } 2563 + }*/
2563 2564
2564 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 2565 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
2565 if (GlobalConfig.docListPrepare && GlobalConfig.docListPrepare.length > 0) { 2566 if (GlobalConfig.docListPrepare && GlobalConfig.docListPrepare.length > 0) {
@@ -2755,10 +2756,10 @@ export default class MessageEntrance extends Emiter { @@ -2755,10 +2756,10 @@ export default class MessageEntrance extends Emiter {
2755 2756
2756 //音乐共享模块加入频道成功,同步到MCU服务器上的数据 2757 //音乐共享模块加入频道成功,同步到MCU服务器上的数据
2757 musicShareApeJoinChannelSuccess() { 2758 musicShareApeJoinChannelSuccess() {
2758 - loger.log("伴音MUSIC模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.musicListPrepare.length); 2759 + //loger.log("伴音MUSIC模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.musicListPrepare.length);
2759 //console.log("伴音MUSIC模块共享模数据->", GlobalConfig.musicListPrepare); 2760 //console.log("伴音MUSIC模块共享模数据->", GlobalConfig.musicListPrepare);
2760 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 2761 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
2761 - if (GlobalConfig.isHost && GlobalConfig.musicListPrepare.length > 0) { 2762 + if (GlobalConfig.isHost && GlobalConfig.musicListPrepare.length > 0&&GlobalConfig.deviceType!=3) {
2762 for (let i = 0; i < GlobalConfig.musicListPrepare.length; i++) { 2763 for (let i = 0; i < GlobalConfig.musicListPrepare.length; i++) {
2763 let value = GlobalConfig.musicListPrepare[i]; 2764 let value = GlobalConfig.musicListPrepare[i];
2764 if (value) { 2765 if (value) {
@@ -2786,10 +2787,10 @@ export default class MessageEntrance extends Emiter { @@ -2786,10 +2787,10 @@ export default class MessageEntrance extends Emiter {
2786 2787
2787 //媒体共享模块加入频道成功,同步到MCU服务器上的数据 2788 //媒体共享模块加入频道成功,同步到MCU服务器上的数据
2788 mediaShareApeJoinChannelSuccess() { 2789 mediaShareApeJoinChannelSuccess() {
2789 - loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length); 2790 + //loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length);
2790 //console.log("媒体共享模数据->", GlobalConfig.sharedMediaList); 2791 //console.log("媒体共享模数据->", GlobalConfig.sharedMediaList);
2791 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 2792 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
2792 - if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) { 2793 + if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0&&GlobalConfig.deviceType!=3) {
2793 for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) { 2794 for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) {
2794 let value = GlobalConfig.sharedMediaList[i]; 2795 let value = GlobalConfig.sharedMediaList[i];
2795 if (value) { 2796 if (value) {
@@ -3028,7 +3029,7 @@ export default class MessageEntrance extends Emiter { @@ -3028,7 +3029,7 @@ export default class MessageEntrance extends Emiter {
3028 * 初始化webRtc 3029 * 初始化webRtc
3029 * */ 3030 * */
3030 _initWebRtcSdk(_params, _callback) { 3031 _initWebRtcSdk(_params, _callback) {
3031 - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { 3032 + if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2 || GlobalConfig.deviceType == 3) {
3032 loger.warn("移动端不需要处理初始化webRtc"); 3033 loger.warn("移动端不需要处理初始化webRtc");
3033 if (_callback) { 3034 if (_callback) {
3034 _callback(); 3035 _callback();
@@ -73,7 +73,7 @@ class ConferApe extends Ape { @@ -73,7 +73,7 @@ class ConferApe extends Ape {
73 item.nodeId = nodeInfoRecordPdu.nodeId; 73 item.nodeId = nodeInfoRecordPdu.nodeId;
74 item.nodeData = nodeInfoRecordPdu.toArrayBuffer(); 74 item.nodeData = nodeInfoRecordPdu.toArrayBuffer();
75 75
76 - let rosterUpdateItem = new pdu['RCRegistryRosterUpdateItemPdu']; 76 + let rosterUpdateItem = new pdu['RCRegistryRosterInsertItemPdu'];
77 rosterUpdateItem.type = pdu.RCPDU_REG_ROSTER_UPDATE_PDU; 77 rosterUpdateItem.type = pdu.RCPDU_REG_ROSTER_UPDATE_PDU;
78 rosterUpdateItem.items.push(item); 78 rosterUpdateItem.items.push(item);
79 79
@@ -160,6 +160,11 @@ class ConferApe extends Ape { @@ -160,6 +160,11 @@ class ConferApe extends Ape {
160 160
161 //更新角色数据 161 //更新角色数据
162 updateUserInfo() { 162 updateUserInfo() {
  163 + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5==true){
  164 + //直播模式下H5不处理更新信息
  165 + console.log("直播模式下H5不处理用户更新信息");
  166 + return;
  167 + }
163 let nodeInfoRecordPdu = this.getNodeInfo(); 168 let nodeInfoRecordPdu = this.getNodeInfo();
164 //loger.log('更新用户信息->', nodeInfoRecordPdu); 169 //loger.log('更新用户信息->', nodeInfoRecordPdu);
165 let userDataPdu = new pdu['RCNodeInfoUserDataPdu']; 170 let userDataPdu = new pdu['RCNodeInfoUserDataPdu'];
@@ -202,7 +207,10 @@ class ConferApe extends Ape { @@ -202,7 +207,10 @@ class ConferApe extends Ape {
202 } 207 }
203 return; 208 return;
204 } 209 }
205 - 210 + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5){
  211 + loger.warn("直播模式H5不能发送课堂控制消息");
  212 + return;
  213 + }
206 // to, message 214 // to, message
207 loger.log('发送课堂控制消息.', _messageInfo); 215 loger.log('发送课堂控制消息.', _messageInfo);
208 216
@@ -300,7 +308,7 @@ class ConferApe extends Ape { @@ -300,7 +308,7 @@ class ConferApe extends Ape {
300 checkHasRecordControl() { 308 checkHasRecordControl() {
301 //loger.warn('检测是否有控制录制操作的权限', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus,"当前人数:"+this.rosterLen); 309 //loger.warn('检测是否有控制录制操作的权限', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus,"当前人数:"+this.rosterLen);
302 //1.如果自己是老师或者当前课堂只有一个人 310 //1.如果自己是老师或者当前课堂只有一个人
303 - if (GlobalConfig.isHost || this.rosterLen <= 1&&GlobalConfig.deviceType!=3) { 311 + if (GlobalConfig.isHost || (this.rosterLen <= 1&&GlobalConfig.deviceType!=3)) {
304 return true; 312 return true;
305 } 313 }
306 //2.如果自己不是老师,需要判断当前课堂内是否有老师,如果有老师就不做操作 314 //2.如果自己不是老师,需要判断当前课堂内是否有老师,如果有老师就不做操作
@@ -610,7 +618,7 @@ class ConferApe extends Ape { @@ -610,7 +618,7 @@ class ConferApe extends Ape {
610 //更新课堂信息 618 //更新课堂信息
611 sendUpdaterClassStatusInfo(_param) { 619 sendUpdaterClassStatusInfo(_param) {
612 //{"actionType": 1,isStopAllPublishMedia:false} //actionType课堂状态 isStopAllPublishMedia是否停止当前的所有推流 620 //{"actionType": 1,isStopAllPublishMedia:false} //actionType课堂状态 isStopAllPublishMedia是否停止当前的所有推流
613 - //loger.log('发送更新课堂信息->'); 621 + //console.log('发送更新课堂信息->');
614 if (_param == null || EngineUtils.isEmptyObject(_param)) { 622 if (_param == null || EngineUtils.isEmptyObject(_param)) {
615 loger.log('发送更新课堂信息->参数错误'); 623 loger.log('发送更新课堂信息->参数错误');
616 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); 624 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
@@ -424,6 +424,10 @@ class VideoApe extends Ape { @@ -424,6 +424,10 @@ class VideoApe extends Ape {
424 424
425 this.sendTableUpdateHandler(channelInfo); 425 this.sendTableUpdateHandler(channelInfo);
426 //递归检查,800毫秒之后执行 426 //递归检查,800毫秒之后执行
  427 + clearTimeout(this.releaseTimeId);
  428 + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5){
  429 + return;
  430 + }
427 this.releaseTimeId = setTimeout(function () { 431 this.releaseTimeId = setTimeout(function () {
428 loger.warn(nodeId, "检查频道是否占用"); 432 loger.warn(nodeId, "检查频道是否占用");
429 this._releaseNodeIdAllChannel(nodeId); 433 this._releaseNodeIdAllChannel(nodeId);