diff --git a/src/EngineEntrance.js b/src/EngineEntrance.js index 81e1449..50aea43 100644 --- a/src/EngineEntrance.js +++ b/src/EngineEntrance.js @@ -57,7 +57,7 @@ export default class MessageEntrance extends Emiter { constructor() { super(); //sdk 信息 - GlobalConfig.sdkVersion="v1.61.0.20170729"; + GlobalConfig.sdkVersion="v1.62.3.20170731"; loger.warn("sdkVersion:"+GlobalConfig.sdkVersion); //获取设备和系统信息 @@ -300,9 +300,22 @@ export default class MessageEntrance extends Emiter { } //mcu异常监听 - _mcuErrorHandler(_data, _option) { - let option = _option || ""; - let errorMessage = {"code": _data, "reson": MessageTypes.ErrorReson[_data] + " " + option}; + _mcuErrorHandler(_data) { + let errorMessage={}; + + //目前只有 userId和身份相同时被踢的时候有type值判断 + switch (_data.type){ + case MessageTypes.ERR_CLASS_KICK_OUT: + case MessageTypes.ERR_CLASS_REMOTE_LANDING: + if(_data){ + errorMessage = {"code": _data.type, "reson": MessageTypes.ErrorReson[_data.type],"data":_data.data}; + } + break; + default : + errorMessage = {"code": _data, "reson": MessageTypes.ErrorReson[_data],"data":{}}; + break; + } + this._emit(MessageTypes.ERROR_EVENT, errorMessage); loger.error("MCU_ERROR", errorMessage); } @@ -736,12 +749,17 @@ export default class MessageEntrance extends Emiter { GlobalConfig.hlsPullListFinal = GlobalConfig.rsPullListFinal; } - loger.warn("课堂最终使用的服务列表->来自本地Server.json"); - loger.warn(" GlobalConfig.mcuListFinal", GlobalConfig.mcuListFinal); - loger.warn(" GlobalConfig.msListFinal", GlobalConfig.msListFinal); - loger.warn(" GlobalConfig.rtmpPullListFinal", GlobalConfig.rtmpPullListFinal); - loger.warn(" GlobalConfig.hlsListFinal", GlobalConfig.hlsPullListFinal); - loger.warn(" GlobalConfig.rsListFinal", GlobalConfig.rsPullListFinal); + if(!ServerConfig.localServerJson||!ServerConfig.localServerJson.MCU||!ServerConfig.localServerJson.MS){ + loger.warn("课堂最终使用的服务列表->来自Sass"); + }else { + loger.warn("课堂最终使用的服务列表->来自本地Server.json"); + } + + loger.warn("mcuListFinal", GlobalConfig.mcuListFinal); + loger.warn("msListFinal", GlobalConfig.msListFinal); + loger.warn("rtmpPullListFinal", GlobalConfig.rtmpPullListFinal); + loger.warn("hlsListFinal", GlobalConfig.hlsPullListFinal); + loger.warn("rsListFinal", GlobalConfig.rsPullListFinal); } //从Sass中选择的mcu、ms列表 _choiceMcuAndMsListFromSass() { @@ -1422,7 +1440,7 @@ export default class MessageEntrance extends Emiter { //是否自动开始(身份是host的时候才用到的) GlobalConfig.isAutoStartClass = _data.autoRecord || 0; - + GlobalConfig.logUrl=_data.logUrl||""; GlobalConfig.serverTime = _data.serverTime || new Date().getTime(); //获取服务器时间戳 GlobalConfig.serverAndLoacTimeDistanc = (new Date().getTime() - GlobalConfig.serverTime) / 1000; //当前系统时间和服务器时间的差值 (秒) loger.warn("服务器时间:" + GlobalConfig.serverTime + " 系统时间:" + new Date().getTime() + " 时间差:" + GlobalConfig.serverAndLoacTimeDistanc); @@ -1485,7 +1503,7 @@ export default class MessageEntrance extends Emiter { GlobalConfig.hlsListFinal=GlobalConfig.hlsPullList; GlobalConfig.rsListFinal=GlobalConfig.rsList; GlobalConfig.mcuListFinal=GlobalConfig.mcuList;*/ - } + } //课堂获取Sass数据完成 this._emit(MessageTypes.CLASS_GET_INFO_SUCCESS, GlobalConfig.getClassInfo()); diff --git a/src/GlobalConfig.js b/src/GlobalConfig.js index 2849855..90afd13 100644 --- a/src/GlobalConfig.js +++ b/src/GlobalConfig.js @@ -518,6 +518,7 @@ GlobalConfig.siteId_letv = 'shchuanbao'; //乐视,MS不需要动态选点的� GlobalConfig.ssTunnelAppURL = ''; //屏幕共享插件的地址 GlobalConfig.serverTime = 0; //服务器当前时间戳 GlobalConfig.serverAndLoacTimeDistanc = 0; //本地时间和服务器时间错的差值; +GlobalConfig.logUrl = ""; //日志上报地址; GlobalConfig.rosterNumber=0;//当前总人数 diff --git a/src/apes/ConferApe.js b/src/apes/ConferApe.js index e8ed472..2fd0667 100644 --- a/src/apes/ConferApe.js +++ b/src/apes/ConferApe.js @@ -26,7 +26,7 @@ class ConferApe extends Ape { ); this.rosters = {}; //用户列表 - this.rosterLen=0;//当前课堂人数 + this.rosterLen = 0;//当前课堂人数 this.timerCounter = new TimerCounter(); //计时器 //第三方消息控制 parent和Iframe直接的通讯 @@ -150,7 +150,7 @@ class ConferApe extends Ape { nodeInfoRecordPdu.explorer = GlobalConfig.explorer; nodeInfoRecordPdu.explorerVersion = GlobalConfig.explorerVersion; nodeInfoRecordPdu.os = GlobalConfig.os; - nodeInfoRecordPdu.sdkVersion=GlobalConfig.sdkVersion||"未知版本"; + nodeInfoRecordPdu.sdkVersion = GlobalConfig.sdkVersion || "未知版本"; return nodeInfoRecordPdu; } @@ -449,7 +449,7 @@ class ConferApe extends Ape { //将指定nodeId的人踢出课堂 kickOutRosterFormNodeId(_param) { - if(GlobalConfig.isNormal){ + if (GlobalConfig.isNormal) { loger.warn("普通身份没有踢人的权限"); return; } @@ -747,10 +747,10 @@ class ConferApe extends Ape { onThirdReciveParentMessage(_msg) { loger.log('收到页面的消息->广播给其他模块->', _msg); //尝试将外部传入的数据转换为JSON 字符串 - let _message=_msg; - try{ - _message=JSON.parse(_msg); - }catch(err){ + let _message = _msg; + try { + _message = JSON.parse(_msg); + } catch (err) { } this.sendThirdBroadcastData({to: 0, message: _message}); @@ -773,12 +773,12 @@ class ConferApe extends Ape { thirdBroadcastSendPdu.initiator = this._classInfo.nodeId; //发起人 thirdBroadcastSendPdu.peer = parseInt(_param.to) || 0; //发送给谁,公聊的时候是0,私聊的时候是指定的用户id thirdBroadcastSendPdu.isPublic = true; - let messageStr=_param.message||""; + let messageStr = _param.message || ""; //尝试把信息转换为JSON 字符串,如果是字符串就不需要转 - try{ - messageStr=JSON.stringify(messageStr); - }catch (err){ + try { + messageStr = JSON.stringify(messageStr); + } catch (err) { } thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + messageStr); @@ -802,7 +802,7 @@ class ConferApe extends Ape { //loger.log("监听第三方消息通道消息->1", thirdMessage); thirdMessage.message = this._rCArrayBufferUtil.uint8ArrayToStr(thirdBroadcastReceivePdu.message, 2); loger.log("监听第三方消息通道消息->", thirdMessage); - this._emit(MessageTypes.RECEIVE_THIRD_MESSGAE,thirdMessage); + this._emit(MessageTypes.RECEIVE_THIRD_MESSGAE, thirdMessage); if (this.thirdMessage) { this.thirdMessage.sendMessageToParent(thirdMessage.message); } @@ -861,12 +861,19 @@ class ConferApe extends Ape { //1.判断进入的用户身份,如果进入的人身份是host,助教,监课,并且和自己的身份冲突,自己会被踢掉 //2.最后进入的人会踢掉之前进入的人,nodeId是按时间戳生成的,最后进入的人nodeId的值比之前进入的人大 if (parseInt(nodeId) > GlobalConfig.nodeId) { + let newUserInfo = { + userId: nodeData.userId, + userName: nodeData.name, + nodeId: nodeData.nodeId, + userRole: nodeData.userRole, + deviceType: nodeData.deviceType + } if (nodeData.role == ApeConsts.NR_HOST && GlobalConfig.isHost) { - this.kickOutRoster(); + this.kickOutRoster(newUserInfo); return; } else if (nodeData.userId == GlobalConfig.userId && GlobalConfig.userId != "0") { loger.log("异地登陆->userId->", GlobalConfig.userId); - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_REMOTE_LANDING); + this._emit(MessageTypes.MCU_ERROR, {type:MessageTypes.ERR_CLASS_REMOTE_LANDING, data:newUserInfo}); this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 1}); } } @@ -912,26 +919,33 @@ class ConferApe extends Ape { loger.log("NR_INVISIBLE"); return; } - if (!rosterExists){ - this.rosterLen=Object.keys(this.rosters).length; + if (!rosterExists) { + this.rosterLen = Object.keys(this.rosters).length; GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 - newNodeData.rosterLen=this.rosterLen; + newNodeData.rosterLen = this.rosterLen; loger.log("人员加入->", newNodeData); this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); this.emitRosterChange(); } else { //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists); - this.rosterLen=Object.keys(this.rosters).length; + this.rosterLen = Object.keys(this.rosters).length; GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 - newNodeData.rosterLen=this.rosterLen; + newNodeData.rosterLen = this.rosterLen; loger.log("人员更新信息->", newNodeData); this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); } } - //踢出用户 - kickOutRoster() { - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_KICK_OUT); + //踢出用户(_param是新进入的人的信息) + kickOutRoster(_newUserInfo) { + /* { + userId: nodeData.userId, + userName: nodeData.name, + nodeId:nodeData.nodeId, + userRole:nodeData.userRole, + deviceType: nodeData.deviceType + }*/ + this._emit(MessageTypes.MCU_ERROR, {type:MessageTypes.ERR_CLASS_KICK_OUT,data: _newUserInfo}); this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 1}); } @@ -990,11 +1004,11 @@ class ConferApe extends Ape { loger.log(nodeId, "->离开课堂->身份->", user.role); } delete this.rosters[nodeId]; - this.rosterLen=Object.keys(this.rosters).length; + this.rosterLen = Object.keys(this.rosters).length; GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 this.emitRosterChange(); - this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId,"rosterLen":this.rosterLen}); + this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId, "rosterLen": this.rosterLen}); //当前人员列表中抽一个人来检查离开人员是否占用频道 for (let key in this.rosters) { @@ -1002,7 +1016,7 @@ class ConferApe extends Ape { //如果抽到的人是自己就处理以下操作 if (randNodeId == GlobalConfig.nodeId) { loger.log(randNodeId, "有权限检查离开的人员是否占用channel"); - this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId,"rosterLen":this.rosterLen}); + this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId, "rosterLen": this.rosterLen}); //如果离开的人员是老师,需要暂停当前的课堂 if (user && user.role == ApeConsts.NR_HOST) {