From d85386b15a9a55aa6c644365becdbd3e43415761 Mon Sep 17 00:00:00 2001
From: liyong <liyong@3mang.com>
Date: Fri, 17 Nov 2017 13:27:18 +0800
Subject: [PATCH] 1.直播模式下H5不再处理用户数据更新的消息和频道释放的递归

---
 src/EngineEntrance.js | 21 +++++++++++----------
 src/apes/ConferApe.js | 16 ++++++++++++----
 src/apes/VideoApe.js  |  4 ++++
 3 files changed, 27 insertions(+), 14 deletions(-)

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);
--
libgit2 0.24.0