正在显示
2 个修改的文件
包含
222 行增加
和
182 行删除
| @@ -25,12 +25,12 @@ class ConferApe extends Ape { | @@ -25,12 +25,12 @@ class ConferApe extends Ape { | ||
| 25 | ApeConsts.CONFERENCE_SESSION_TAG | 25 | ApeConsts.CONFERENCE_SESSION_TAG |
| 26 | ); | 26 | ); |
| 27 | 27 | ||
| 28 | - this.rosters = {};//用户列表 | ||
| 29 | - this.timerCounter = new TimerCounter();//计时器 | 28 | + this.rosters = {}; //用户列表 |
| 29 | + this.timerCounter = new TimerCounter(); //计时器 | ||
| 30 | 30 | ||
| 31 | //第三方消息控制 parent和Iframe直接的通讯 | 31 | //第三方消息控制 parent和Iframe直接的通讯 |
| 32 | - this.thirdMessage=new ThirdMessage(); | ||
| 33 | - this.thirdMessage.on(ThirdMessage.RECIVE_MESSAGE,this.onThirdReciveParentMessage.bind(this)); | 32 | + this.thirdMessage = new ThirdMessage(); |
| 33 | + this.thirdMessage.on(ThirdMessage.RECIVE_MESSAGE, this.onThirdReciveParentMessage.bind(this)); | ||
| 34 | 34 | ||
| 35 | // Ape Models | 35 | // Ape Models |
| 36 | this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); | 36 | this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); |
| @@ -49,9 +49,9 @@ class ConferApe extends Ape { | @@ -49,9 +49,9 @@ class ConferApe extends Ape { | ||
| 49 | 49 | ||
| 50 | this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this)); | 50 | this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this)); |
| 51 | 51 | ||
| 52 | - this.on(pdu.RCPDU_SEND_CONFERENCE_DATA_REQUEST, this.conferMsgComingHandler.bind(this));//这个是课堂消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理 | ||
| 53 | - this.on(pdu.RCPDU_CONFERENCE_RECORD_REQUEST, this.onSendConferRecordRequestHandler.bind(this));//发送录制和停止录制消息 | ||
| 54 | - this.on(pdu.RCPDU_THIRD_BROADCAST_DATA_REQUEST, this.onThirdBroadcastDataHandler.bind(this));//第三方广播消息 | 52 | + this.on(pdu.RCPDU_SEND_CONFERENCE_DATA_REQUEST, this.conferMsgComingHandler.bind(this)); //这个是课堂消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理 |
| 53 | + this.on(pdu.RCPDU_CONFERENCE_RECORD_REQUEST, this.onSendConferRecordRequestHandler.bind(this)); //发送录制和停止录制消息 | ||
| 54 | + this.on(pdu.RCPDU_THIRD_BROADCAST_DATA_REQUEST, this.onThirdBroadcastDataHandler.bind(this)); //第三方广播消息 | ||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | //加入课堂 | 57 | //加入课堂 |
| @@ -64,9 +64,9 @@ class ConferApe extends Ape { | @@ -64,9 +64,9 @@ class ConferApe extends Ape { | ||
| 64 | userDataPdu.skype = ''; | 64 | userDataPdu.skype = ''; |
| 65 | 65 | ||
| 66 | nodeInfoRecordPdu.userData = userDataPdu.toArrayBuffer(); | 66 | nodeInfoRecordPdu.userData = userDataPdu.toArrayBuffer(); |
| 67 | - nodeInfoRecordPdu.deviceType = GlobalConfig.deviceType;//设备类型 | 67 | + nodeInfoRecordPdu.deviceType = GlobalConfig.deviceType; //设备类型 |
| 68 | 68 | ||
| 69 | - loger.log('开始加入->',nodeInfoRecordPdu); | 69 | + loger.log('开始加入->', nodeInfoRecordPdu); |
| 70 | 70 | ||
| 71 | let item = new pdu['RCRegistryRosterItemPdu']; | 71 | let item = new pdu['RCRegistryRosterItemPdu']; |
| 72 | item.nodeId = nodeInfoRecordPdu.nodeId; | 72 | item.nodeId = nodeInfoRecordPdu.nodeId; |
| @@ -92,51 +92,51 @@ class ConferApe extends Ape { | @@ -92,51 +92,51 @@ class ConferApe extends Ape { | ||
| 92 | this.sendUniform(adapterPdu, true); | 92 | this.sendUniform(adapterPdu, true); |
| 93 | } | 93 | } |
| 94 | //获取角色信息 | 94 | //获取角色信息 |
| 95 | - getNodeInfo(){ | 95 | + getNodeInfo() { |
| 96 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; | 96 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; |
| 97 | - nodeInfoRecordPdu.nodeId= GlobalConfig.nodeId; | ||
| 98 | - nodeInfoRecordPdu.name= GlobalConfig.userName; | ||
| 99 | - nodeInfoRecordPdu.role= ApeConsts.userTypesToId[GlobalConfig.userRole] || 1; //NR_NORMAL用户的身份,根据用户登录时的身份设置; | ||
| 100 | - nodeInfoRecordPdu.level= GlobalConfig.level; | 97 | + nodeInfoRecordPdu.nodeId = GlobalConfig.nodeId; |
| 98 | + nodeInfoRecordPdu.selfSilence = JSON.stringify(GlobalConfig.selfSilence); | ||
| 99 | + nodeInfoRecordPdu.name = GlobalConfig.userName; | ||
| 100 | + nodeInfoRecordPdu.role = ApeConsts.userTypesToId[GlobalConfig.userRole] || 1; //NR_NORMAL用户的身份,根据用户登录时的身份设置; | ||
| 101 | + nodeInfoRecordPdu.level = GlobalConfig.level; | ||
| 101 | //nodeInfoRecordPdu.audioRecords= GlobalConfig.audioRecords; | 102 | //nodeInfoRecordPdu.audioRecords= GlobalConfig.audioRecords; |
| 102 | //nodeInfoRecordPdu.videoRecords= GlobalConfig.videoRecords; | 103 | //nodeInfoRecordPdu.videoRecords= GlobalConfig.videoRecords; |
| 103 | //nodeInfoRecordPdu.status= GlobalConfig.status; | 104 | //nodeInfoRecordPdu.status= GlobalConfig.status; |
| 104 | - nodeInfoRecordPdu.userData= GlobalConfig.userData; | ||
| 105 | - nodeInfoRecordPdu.userId= GlobalConfig.userId; | ||
| 106 | - nodeInfoRecordPdu.handUpTime= GlobalConfig.handUpTime; | 105 | + nodeInfoRecordPdu.userData = GlobalConfig.userData; |
| 106 | + nodeInfoRecordPdu.userId = GlobalConfig.userId; | ||
| 107 | + nodeInfoRecordPdu.handUpTime = GlobalConfig.handUpTime; | ||
| 107 | //nodeInfoRecordPdu.deviceType= GlobalConfig.deviceType; | 108 | //nodeInfoRecordPdu.deviceType= GlobalConfig.deviceType; |
| 108 | //nodeInfoRecordPdu.mobileDirection= GlobalConfig.mobileDirection; | 109 | //nodeInfoRecordPdu.mobileDirection= GlobalConfig.mobileDirection; |
| 109 | - nodeInfoRecordPdu.microphones= GlobalConfig.microphones; | ||
| 110 | - nodeInfoRecordPdu.cameras= GlobalConfig.cameras; | ||
| 111 | - nodeInfoRecordPdu.openCamera= GlobalConfig.openCamera; | ||
| 112 | - nodeInfoRecordPdu.openMicrophones= GlobalConfig.openMicrophones; | ||
| 113 | - nodeInfoRecordPdu.videoQuality= GlobalConfig.videoQuality; | ||
| 114 | - nodeInfoRecordPdu.userIp= GlobalConfig.userIp; | ||
| 115 | - | ||
| 116 | - nodeInfoRecordPdu.curVideoQuality=GlobalConfig.curVideoQuality; | ||
| 117 | - nodeInfoRecordPdu.micGain= GlobalConfig.micGain; | ||
| 118 | - nodeInfoRecordPdu.speakerVolume=GlobalConfig.speakerVolume; | ||
| 119 | - nodeInfoRecordPdu.micCode= GlobalConfig.micCode; | ||
| 120 | - nodeInfoRecordPdu.curCamera=GlobalConfig.curCamera; | ||
| 121 | - nodeInfoRecordPdu.curMicrophone=GlobalConfig.curMicrophone; | ||
| 122 | - | ||
| 123 | - | ||
| 124 | - nodeInfoRecordPdu.country=GlobalConfig.country ;//国家 | ||
| 125 | - nodeInfoRecordPdu.city=GlobalConfig.city ;//城市 | ||
| 126 | - nodeInfoRecordPdu.province= GlobalConfig.province;//服务商 | ||
| 127 | - nodeInfoRecordPdu.isp=GlobalConfig.isp;//服务商 | 110 | + nodeInfoRecordPdu.microphones = GlobalConfig.microphones; |
| 111 | + nodeInfoRecordPdu.cameras = GlobalConfig.cameras; | ||
| 112 | + nodeInfoRecordPdu.openCamera = GlobalConfig.openCamera; | ||
| 113 | + nodeInfoRecordPdu.openMicrophones = GlobalConfig.openMicrophones; | ||
| 114 | + nodeInfoRecordPdu.videoQuality = GlobalConfig.videoQuality; | ||
| 115 | + nodeInfoRecordPdu.userIp = GlobalConfig.userIp; | ||
| 116 | + | ||
| 117 | + nodeInfoRecordPdu.curVideoQuality = GlobalConfig.curVideoQuality; | ||
| 118 | + nodeInfoRecordPdu.micGain = GlobalConfig.micGain; | ||
| 119 | + nodeInfoRecordPdu.speakerVolume = GlobalConfig.speakerVolume; | ||
| 120 | + nodeInfoRecordPdu.micCode = GlobalConfig.micCode; | ||
| 121 | + nodeInfoRecordPdu.curCamera = GlobalConfig.curCamera; | ||
| 122 | + nodeInfoRecordPdu.curMicrophone = GlobalConfig.curMicrophone; | ||
| 123 | + | ||
| 124 | + nodeInfoRecordPdu.country = GlobalConfig.country; //国家 | ||
| 125 | + nodeInfoRecordPdu.city = GlobalConfig.city; //城市 | ||
| 126 | + nodeInfoRecordPdu.province = GlobalConfig.province; //服务商 | ||
| 127 | + nodeInfoRecordPdu.isp = GlobalConfig.isp; //服务商 | ||
| 128 | 128 | ||
| 129 | //用户的MS列表 | 129 | //用户的MS列表 |
| 130 | - let msListAll=GlobalConfig.msListAll; | ||
| 131 | - for(let k=0;k<msListAll.length;k++){ | ||
| 132 | - let msItem=msListAll[k]; | ||
| 133 | - if(msItem){ | 130 | + let msListAll = GlobalConfig.msListAll; |
| 131 | + for (let k = 0; k < msListAll.length; k++) { | ||
| 132 | + let msItem = msListAll[k]; | ||
| 133 | + if (msItem) { | ||
| 134 | let msListItemPdu = new pdu['MsListItemPdu']; | 134 | let msListItemPdu = new pdu['MsListItemPdu']; |
| 135 | - msListItemPdu.ip=msItem.ip||""; | ||
| 136 | - msListItemPdu.port=msItem.port||""; | ||
| 137 | - msListItemPdu.country=msItem.country||""; | ||
| 138 | - msListItemPdu.province=msItem.province||""; | ||
| 139 | - msListItemPdu.city=msItem.city||""; | 135 | + msListItemPdu.ip = msItem.ip || ""; |
| 136 | + msListItemPdu.port = msItem.port || ""; | ||
| 137 | + msListItemPdu.country = msItem.country || ""; | ||
| 138 | + msListItemPdu.province = msItem.province || ""; | ||
| 139 | + msListItemPdu.city = msItem.city || ""; | ||
| 140 | nodeInfoRecordPdu.msList.push(msListItemPdu); | 140 | nodeInfoRecordPdu.msList.push(msListItemPdu); |
| 141 | } | 141 | } |
| 142 | } | 142 | } |
| @@ -144,15 +144,15 @@ class ConferApe extends Ape { | @@ -144,15 +144,15 @@ class ConferApe extends Ape { | ||
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | //更新角色数据 | 146 | //更新角色数据 |
| 147 | - updateUserInfo(){ | 147 | + updateUserInfo() { |
| 148 | let nodeInfoRecordPdu = this.getNodeInfo(); | 148 | let nodeInfoRecordPdu = this.getNodeInfo(); |
| 149 | - loger.log('更新用户信息->',nodeInfoRecordPdu); | 149 | + loger.log('更新用户信息->', nodeInfoRecordPdu); |
| 150 | let userDataPdu = new pdu['RCNodeInfoUserDataPdu']; | 150 | let userDataPdu = new pdu['RCNodeInfoUserDataPdu']; |
| 151 | userDataPdu.qq = ''; | 151 | userDataPdu.qq = ''; |
| 152 | userDataPdu.skype = ''; | 152 | userDataPdu.skype = ''; |
| 153 | 153 | ||
| 154 | nodeInfoRecordPdu.userData = userDataPdu.toArrayBuffer(); | 154 | nodeInfoRecordPdu.userData = userDataPdu.toArrayBuffer(); |
| 155 | - nodeInfoRecordPdu.deviceType = GlobalConfig.deviceType;//设备类型 | 155 | + nodeInfoRecordPdu.deviceType = GlobalConfig.deviceType; //设备类型 |
| 156 | 156 | ||
| 157 | let item = new pdu['RCRegistryRosterItemPdu']; | 157 | let item = new pdu['RCRegistryRosterItemPdu']; |
| 158 | item.nodeId = nodeInfoRecordPdu.nodeId; | 158 | item.nodeId = nodeInfoRecordPdu.nodeId; |
| @@ -193,8 +193,8 @@ class ConferApe extends Ape { | @@ -193,8 +193,8 @@ class ConferApe extends Ape { | ||
| 193 | 193 | ||
| 194 | let conferSendPdu = new pdu['RCConferenceSendDataRequestPdu']; | 194 | let conferSendPdu = new pdu['RCConferenceSendDataRequestPdu']; |
| 195 | conferSendPdu.type = pdu.RCPDU_SEND_CONFERENCE_DATA_REQUEST; | 195 | conferSendPdu.type = pdu.RCPDU_SEND_CONFERENCE_DATA_REQUEST; |
| 196 | - conferSendPdu.initiator = this._classInfo.nodeId;//发起人 | ||
| 197 | - conferSendPdu.peer = parseInt(_messageInfo.to);//发送给谁,公聊的时候是0,私聊的时候是指定的用户id | 196 | + conferSendPdu.initiator = this._classInfo.nodeId; //发起人 |
| 197 | + conferSendPdu.peer = parseInt(_messageInfo.to); //发送给谁,公聊的时候是0,私聊的时候是指定的用户id | ||
| 198 | 198 | ||
| 199 | conferSendPdu.userData = this._rCArrayBufferUtil.strToUint8Array("h5" + _messageInfo.message); | 199 | conferSendPdu.userData = this._rCArrayBufferUtil.strToUint8Array("h5" + _messageInfo.message); |
| 200 | //conferSendPdu.userData =UTF8.setBytesFromString(_messageInfo.message); | 200 | //conferSendPdu.userData =UTF8.setBytesFromString(_messageInfo.message); |
| @@ -216,7 +216,7 @@ class ConferApe extends Ape { | @@ -216,7 +216,7 @@ class ConferApe extends Ape { | ||
| 216 | sendConferRecordMsg(_param) { | 216 | sendConferRecordMsg(_param) { |
| 217 | if (!this.mcu.connected) { | 217 | if (!this.mcu.connected) { |
| 218 | loger.warn(GlobalConfig.getCurrentStatus()); | 218 | loger.warn(GlobalConfig.getCurrentStatus()); |
| 219 | - return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; | 219 | + return { "code": ApeConsts.RETURN_FAILED, "data": "已经断开连接" }; |
| 220 | } | 220 | } |
| 221 | if (_param == null) { | 221 | if (_param == null) { |
| 222 | loger.warn("控制录制状的消息发送失败,参数错误", _param); | 222 | loger.warn("控制录制状的消息发送失败,参数错误", _param); |
| @@ -235,13 +235,13 @@ class ConferApe extends Ape { | @@ -235,13 +235,13 @@ class ConferApe extends Ape { | ||
| 235 | 235 | ||
| 236 | let conferRecordSendPdu = new pdu['RCConferenceRecordRequestPdu']; | 236 | let conferRecordSendPdu = new pdu['RCConferenceRecordRequestPdu']; |
| 237 | conferRecordSendPdu.type = pdu.RCPDU_CONFERENCE_RECORD_REQUEST; | 237 | conferRecordSendPdu.type = pdu.RCPDU_CONFERENCE_RECORD_REQUEST; |
| 238 | - conferRecordSendPdu.peer = 0;//channel 为0 | 238 | + conferRecordSendPdu.peer = 0; //channel 为0 |
| 239 | conferRecordSendPdu.isPublic = true; | 239 | conferRecordSendPdu.isPublic = true; |
| 240 | 240 | ||
| 241 | - conferRecordSendPdu.initiator = this._classInfo.nodeId;//发起人 | 241 | + conferRecordSendPdu.initiator = this._classInfo.nodeId; //发起人 |
| 242 | conferRecordSendPdu.record = GlobalConfig.recordStatus; | 242 | conferRecordSendPdu.record = GlobalConfig.recordStatus; |
| 243 | //conferRecordSendPdu.classTime = GlobalConfig.classTimestamp;//不能使用课堂进行时间,这个时间结束课堂的时候会被清除 | 243 | //conferRecordSendPdu.classTime = GlobalConfig.classTimestamp;//不能使用课堂进行时间,这个时间结束课堂的时候会被清除 |
| 244 | - conferRecordSendPdu.classTime = GlobalConfig.recordTimestamp;//课堂录制的累积时间,不会被清除 | 244 | + conferRecordSendPdu.classTime = GlobalConfig.recordTimestamp; //课堂录制的累积时间,不会被清除 |
| 245 | conferRecordSendPdu.filename = GlobalConfig.recordFileName || GlobalConfig.classId + "_" + EngineUtils.creatTimestampYMD() + ".rec"; | 245 | conferRecordSendPdu.filename = GlobalConfig.recordFileName || GlobalConfig.classId + "_" + EngineUtils.creatTimestampYMD() + ".rec"; |
| 246 | this.sendChatUniform(conferRecordSendPdu); | 246 | this.sendChatUniform(conferRecordSendPdu); |
| 247 | // to, message | 247 | // to, message |
| @@ -251,8 +251,8 @@ class ConferApe extends Ape { | @@ -251,8 +251,8 @@ class ConferApe extends Ape { | ||
| 251 | //开启录制 | 251 | //开启录制 |
| 252 | startRecord() { | 252 | startRecord() { |
| 253 | //如果录制的时间长超出设定的最大录制时间就不再录制 | 253 | //如果录制的时间长超出设定的最大录制时间就不再录制 |
| 254 | - if(GlobalConfig.recordTimestamp>=GlobalConfig.allowRecordMaxTime){ | ||
| 255 | - loger.warn('不能再录制,录制时间已经达到最大限制',GlobalConfig.recordTimestamp); | 254 | + if (GlobalConfig.recordTimestamp >= GlobalConfig.allowRecordMaxTime) { |
| 255 | + loger.warn('不能再录制,录制时间已经达到最大限制', GlobalConfig.recordTimestamp); | ||
| 256 | return; | 256 | return; |
| 257 | } | 257 | } |
| 258 | 258 | ||
| @@ -260,33 +260,32 @@ class ConferApe extends Ape { | @@ -260,33 +260,32 @@ class ConferApe extends Ape { | ||
| 260 | //如果是host | 260 | //如果是host |
| 261 | if (GlobalConfig.isHost) { | 261 | if (GlobalConfig.isHost) { |
| 262 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); | 262 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); |
| 263 | - this.sendConferRecordMsg({"recordStatus": true}); | 263 | + this.sendConferRecordMsg({ "recordStatus": true }); |
| 264 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 264 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 265 | - this._emit(MessageTypes.CLASS_RECORD_START);//课堂开始录制 | 265 | + this._emit(MessageTypes.CLASS_RECORD_START); //课堂开始录制 |
| 266 | } | 266 | } |
| 267 | } | 267 | } |
| 268 | 268 | ||
| 269 | //停止录制 | 269 | //停止录制 |
| 270 | stopRecord(isForce) { | 270 | stopRecord(isForce) { |
| 271 | loger.log('stopRecord', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus); | 271 | loger.log('stopRecord', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus); |
| 272 | - if(isForce&&isForce==true){ | 272 | + if (isForce && isForce == true) { |
| 273 | //强制停止,可以是host之外的身份(比如当前课堂老师异常退出,没有老师,会随机选择一个人来做释放操作) | 273 | //强制停止,可以是host之外的身份(比如当前课堂老师异常退出,没有老师,会随机选择一个人来做释放操作) |
| 274 | if (GlobalConfig.recordStatus) { | 274 | if (GlobalConfig.recordStatus) { |
| 275 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); | 275 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); |
| 276 | - this.sendConferRecordMsg({"recordStatus": false}); | 276 | + this.sendConferRecordMsg({ "recordStatus": false }); |
| 277 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 277 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 278 | } | 278 | } |
| 279 | - }else { | 279 | + } else { |
| 280 | //身份是host,并且当前正在录制中 | 280 | //身份是host,并且当前正在录制中 |
| 281 | if (GlobalConfig.isHost && GlobalConfig.recordStatus) { | 281 | if (GlobalConfig.isHost && GlobalConfig.recordStatus) { |
| 282 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); | 282 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); |
| 283 | - this.sendConferRecordMsg({"recordStatus": false}); | 283 | + this.sendConferRecordMsg({ "recordStatus": false }); |
| 284 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 284 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 285 | } | 285 | } |
| 286 | } | 286 | } |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | - | ||
| 290 | //主动离开课堂,发送通知到服务器 | 289 | //主动离开课堂,发送通知到服务器 |
| 291 | leaveClass() { | 290 | leaveClass() { |
| 292 | let nodeInfoRecordPdu = this.mcu.mcuClassInfo.self; | 291 | let nodeInfoRecordPdu = this.mcu.mcuClassInfo.self; |
| @@ -328,10 +327,25 @@ class ConferApe extends Ape { | @@ -328,10 +327,25 @@ class ConferApe extends Ape { | ||
| 328 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); | 327 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); |
| 329 | this.stopRecord(); | 328 | this.stopRecord(); |
| 330 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 329 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 331 | - this.sendUpdaterClassStatusInfo({"actionType": 0,isStopAllPublishMedia:true}); | 330 | + this.sendUpdaterClassStatusInfo({ "actionType": 0, isStopAllPublishMedia: true }); |
| 332 | loger.log('restorClass'); | 331 | loger.log('restorClass'); |
| 333 | } | 332 | } |
| 334 | 333 | ||
| 334 | + // 全局禁言 | ||
| 335 | + silenceClass(isSilence) { | ||
| 336 | + if (GlobalConfig.isHost) { | ||
| 337 | + GlobalConfig.silence = !!isSilence; | ||
| 338 | + | ||
| 339 | + //禁言状态改变 | ||
| 340 | + this._emit(MessageTypes.CLASS_SILENCE_CHANGE, GlobalConfig.silence); | ||
| 341 | + | ||
| 342 | + //同步禁言状态 | ||
| 343 | + this.sendUpdaterClassStatusInfo(); | ||
| 344 | + } else { | ||
| 345 | + loger.warn('没有开始课堂的权限'); | ||
| 346 | + } | ||
| 347 | + } | ||
| 348 | + | ||
| 335 | //开始上课 | 349 | //开始上课 |
| 336 | startClass(_param) { | 350 | startClass(_param) { |
| 337 | if (GlobalConfig.isHost) { | 351 | if (GlobalConfig.isHost) { |
| @@ -342,8 +356,7 @@ class ConferApe extends Ape { | @@ -342,8 +356,7 @@ class ConferApe extends Ape { | ||
| 342 | //如果录制的文件名不存在,需要创建一个名字 | 356 | //如果录制的文件名不存在,需要创建一个名字 |
| 343 | let timestampYMD = EngineUtils.creatTimestampYMD(); | 357 | let timestampYMD = EngineUtils.creatTimestampYMD(); |
| 344 | GlobalConfig.recordFileName = GlobalConfig.recordFileName || | 358 | GlobalConfig.recordFileName = GlobalConfig.recordFileName || |
| 345 | - GlobalConfig.siteId + "/" + timestampYMD + "/" | ||
| 346 | - + GlobalConfig.classId + "_" + timestampYMD + ".rec";//4、文件名称 $RECORD_HOME/`site id`/`日期`/`filename` 例:/data/record/su/20161216/`filename` | 359 | + GlobalConfig.siteId + "/" + timestampYMD + "/" + GlobalConfig.classId + "_" + timestampYMD + ".rec"; //4、文件名称 $RECORD_HOME/`site id`/`日期`/`filename` 例:/data/record/su/20161216/`filename` |
| 347 | 360 | ||
| 348 | if (GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_WAIT) { | 361 | if (GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_WAIT) { |
| 349 | //之前是为开始状态,第一次点开始 | 362 | //之前是为开始状态,第一次点开始 |
| @@ -356,7 +369,7 @@ class ConferApe extends Ape { | @@ -356,7 +369,7 @@ class ConferApe extends Ape { | ||
| 356 | //课堂状态改变 | 369 | //课堂状态改变 |
| 357 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 370 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 358 | //同步课堂状态 | 371 | //同步课堂状态 |
| 359 | - this.sendUpdaterClassStatusInfo({"actionType": 1,isStopAllPublishMedia:true}); | 372 | + this.sendUpdaterClassStatusInfo({ "actionType": 1, isStopAllPublishMedia: true }); |
| 360 | 373 | ||
| 361 | //开始计时 | 374 | //开始计时 |
| 362 | this.startTimerCounter(); | 375 | this.startTimerCounter(); |
| @@ -375,8 +388,8 @@ class ConferApe extends Ape { | @@ -375,8 +388,8 @@ class ConferApe extends Ape { | ||
| 375 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); | 388 | GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); |
| 376 | 389 | ||
| 377 | this.stopRecord(); | 390 | this.stopRecord(); |
| 378 | - this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE,_param); | ||
| 379 | - this.sendUpdaterClassStatusInfo({"actionType": 2,isStopAllPublishMedia:true}); | 391 | + this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE, _param); |
| 392 | + this.sendUpdaterClassStatusInfo({ "actionType": 2, isStopAllPublishMedia: true }); | ||
| 380 | this.stopTimerCounter(); | 393 | this.stopTimerCounter(); |
| 381 | } | 394 | } |
| 382 | 395 | ||
| @@ -390,58 +403,77 @@ class ConferApe extends Ape { | @@ -390,58 +403,77 @@ class ConferApe extends Ape { | ||
| 390 | this.stopTimerCounter(); | 403 | this.stopTimerCounter(); |
| 391 | this.restorClass(); | 404 | this.restorClass(); |
| 392 | //把所有人都踢出课堂 | 405 | //把所有人都踢出课堂 |
| 393 | - this.sendConferMsg({"to": 0, "message": "所有人退出课堂", "actionType": ApeConsts.CLASS_ACTION_CLOSE_ALL}); | 406 | + this.sendConferMsg({ "to": 0, "message": "所有人退出课堂", "actionType": ApeConsts.CLASS_ACTION_CLOSE_ALL }); |
| 394 | } | 407 | } |
| 395 | //更新设备信息 | 408 | //更新设备信息 |
| 396 | - updateDeviceInfo(_param){ | ||
| 397 | - loger.log('更新用户的设备信息->',_param); | 409 | + updateDeviceInfo(_param) { |
| 410 | + loger.log('更新用户的设备信息->', _param); | ||
| 411 | + this.updateUserInfo(); | ||
| 412 | + } | ||
| 413 | + | ||
| 414 | + // 禁言控制 | ||
| 415 | + controlSilenceStatus(_param) { | ||
| 416 | + //控制用户的禁言状态 | ||
| 417 | + if (!_param || !_param.nodeId) { | ||
| 418 | + loger.log('控制禁言状态->失败->参数错误', _param); | ||
| 419 | + return; | ||
| 420 | + } | ||
| 421 | + let msgObj = {}; | ||
| 422 | + msgObj.nodeId = _param.nodeId; | ||
| 423 | + msgObj.silence = _param.silence || ''; | ||
| 424 | + this.sendConferMsg({ "to": _param.nodeId, "message": JSON.stringify(msgObj), "actionType": ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE }); | ||
| 425 | + } | ||
| 426 | + | ||
| 427 | + changeSilenceStatus(_param) { | ||
| 428 | + loger.log('切换禁言状态->', _param); | ||
| 429 | + GlobalConfig.selfSilence = _param.silence; | ||
| 398 | this.updateUserInfo(); | 430 | this.updateUserInfo(); |
| 399 | } | 431 | } |
| 400 | 432 | ||
| 401 | //控制举手状态 | 433 | //控制举手状态 |
| 402 | - controlHandUpStatus(_param){ | 434 | + controlHandUpStatus(_param) { |
| 403 | //控制用户的举手状态 | 435 | //控制用户的举手状态 |
| 404 | - if(!_param||!_param.nodeId){ | ||
| 405 | - loger.log('控制举手状态->失败->参数错误',_param); | 436 | + if (!_param || !_param.nodeId) { |
| 437 | + loger.log('控制举手状态->失败->参数错误', _param); | ||
| 406 | return; | 438 | return; |
| 407 | } | 439 | } |
| 408 | - let msgObj={}; | ||
| 409 | - msgObj.nodeId=_param.nodeId; | ||
| 410 | - msgObj.isHandUp=false; | ||
| 411 | - if(_param&&_param.isHandUp==true){ | ||
| 412 | - msgObj.isHandUp=true; | 440 | + let msgObj = {}; |
| 441 | + msgObj.nodeId = _param.nodeId; | ||
| 442 | + msgObj.isHandUp = false; | ||
| 443 | + if (_param && _param.isHandUp == true) { | ||
| 444 | + msgObj.isHandUp = true; | ||
| 413 | } | 445 | } |
| 414 | - this.sendConferMsg({"to":_param.nodeId, "message":JSON.stringify(msgObj), "actionType": ApeConsts.CLASS_ACTION_HANDUP_STATUS_CHANGE}); | 446 | + this.sendConferMsg({ "to": _param.nodeId, "message": JSON.stringify(msgObj), "actionType": ApeConsts.CLASS_ACTION_HANDUP_STATUS_CHANGE }); |
| 415 | } | 447 | } |
| 448 | + | ||
| 416 | //切换举手状态 | 449 | //切换举手状态 |
| 417 | - changeHandUpStatus(_param){ | ||
| 418 | - loger.log('切换举手状态->',_param); | ||
| 419 | - if(_param&&_param.isHandUp==true){ | 450 | + changeHandUpStatus(_param) { |
| 451 | + loger.log('切换举手状态->', _param); | ||
| 452 | + if (_param && _param.isHandUp == true) { | ||
| 420 | //举手 | 453 | //举手 |
| 421 | - GlobalConfig.handUpTime=EngineUtils.creatTimestamp(); | ||
| 422 | - }else { | ||
| 423 | - GlobalConfig.handUpTime=0;//默认0是没有举手的状态(大于0就是举手) | 454 | + GlobalConfig.handUpTime = EngineUtils.creatTimestamp(); |
| 455 | + } else { | ||
| 456 | + GlobalConfig.handUpTime = 0; //默认0是没有举手的状态(大于0就是举手) | ||
| 424 | } | 457 | } |
| 425 | this.updateUserInfo(); | 458 | this.updateUserInfo(); |
| 426 | } | 459 | } |
| 427 | //课堂的场景模块发送改变 | 460 | //课堂的场景模块发送改变 |
| 428 | - sceneTableChange(_param){ | ||
| 429 | - if(GlobalConfig.isRecordPlayBack){ | 461 | + sceneTableChange(_param) { |
| 462 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 430 | return; | 463 | return; |
| 431 | } | 464 | } |
| 432 | - loger.log('切换文档-媒体-屏幕模块切换->',_param); | 465 | + loger.log('切换文档-媒体-屏幕模块切换->', _param); |
| 433 | //如果是host身份 | 466 | //如果是host身份 |
| 434 | if (GlobalConfig.isHost) { | 467 | if (GlobalConfig.isHost) { |
| 435 | - if(_param){ | ||
| 436 | - GlobalConfig.currentSceneTableId=parseInt(_param.currentSceneTableId)||0;//当前场景显示的模块 0=文档模块、1=屏幕共享、2=媒体共享 | 468 | + if (_param) { |
| 469 | + GlobalConfig.currentSceneTableId = parseInt(_param.currentSceneTableId) || 0; //当前场景显示的模块 0=文档模块、1=屏幕共享、2=媒体共享 | ||
| 437 | //保存数据到Sass | 470 | //保存数据到Sass |
| 438 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 471 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 439 | //同步消息给其他人 | 472 | //同步消息给其他人 |
| 440 | - this.sendUpdaterClassStatusInfo({"actionType": 1,isStopAllPublishMedia:false}); | 473 | + this.sendUpdaterClassStatusInfo({ "actionType": 1, isStopAllPublishMedia: false }); |
| 441 | } | 474 | } |
| 442 | } | 475 | } |
| 443 | 476 | ||
| 444 | - | ||
| 445 | } | 477 | } |
| 446 | //更新课堂信息 | 478 | //更新课堂信息 |
| 447 | sendUpdaterClassStatusInfo(_param) { | 479 | sendUpdaterClassStatusInfo(_param) { |
| @@ -452,7 +484,7 @@ class ConferApe extends Ape { | @@ -452,7 +484,7 @@ class ConferApe extends Ape { | ||
| 452 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); | 484 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); |
| 453 | return; | 485 | return; |
| 454 | } | 486 | } |
| 455 | - let itemIdx = ApeConsts.CONFERENCE_OBJ_TABLE_ID;// itemIdx=_param.itemIdx; | 487 | + let itemIdx = ApeConsts.CONFERENCE_OBJ_TABLE_ID; // itemIdx=_param.itemIdx; |
| 456 | let modelPdu = this.packPdu(_param, itemIdx); | 488 | let modelPdu = this.packPdu(_param, itemIdx); |
| 457 | loger.log(modelPdu); | 489 | loger.log(modelPdu); |
| 458 | if (modelPdu == null) { | 490 | if (modelPdu == null) { |
| @@ -463,19 +495,17 @@ class ConferApe extends Ape { | @@ -463,19 +495,17 @@ class ConferApe extends Ape { | ||
| 463 | 495 | ||
| 464 | let tableItemPdu = new pdu['RCRegistryTableItemPdu']; | 496 | let tableItemPdu = new pdu['RCRegistryTableItemPdu']; |
| 465 | tableItemPdu.itemIdx = itemIdx; | 497 | tableItemPdu.itemIdx = itemIdx; |
| 466 | - tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定 | 498 | + tableItemPdu.owner = 0; //收到flash的是这个值,不清楚先写固定 |
| 467 | tableItemPdu.registerObjId = ApeConsts.CONFERENCE_OBJ_TABLE_ID; | 499 | tableItemPdu.registerObjId = ApeConsts.CONFERENCE_OBJ_TABLE_ID; |
| 468 | tableItemPdu.itemData = modelPdu.toArrayBuffer(); | 500 | tableItemPdu.itemData = modelPdu.toArrayBuffer(); |
| 469 | 501 | ||
| 470 | - | ||
| 471 | //updater | 502 | //updater |
| 472 | let tableUpdateItem = new pdu['RCRegistryTableUpdateItemPdu']; | 503 | let tableUpdateItem = new pdu['RCRegistryTableUpdateItemPdu']; |
| 473 | //optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU]; | 504 | //optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU]; |
| 474 | //repeated RCRegistryTableItemPdu items = 2; | 505 | //repeated RCRegistryTableItemPdu items = 2; |
| 475 | - tableUpdateItem.type = pdu.RCPDU_REG_TABLE_UPDATE_PDU;// | 506 | + tableUpdateItem.type = pdu.RCPDU_REG_TABLE_UPDATE_PDU; // |
| 476 | tableUpdateItem.items.push(tableItemPdu); | 507 | tableUpdateItem.items.push(tableItemPdu); |
| 477 | 508 | ||
| 478 | - | ||
| 479 | let updateObjPdu = new pdu['RCRegistryUpdateObjPdu']; | 509 | let updateObjPdu = new pdu['RCRegistryUpdateObjPdu']; |
| 480 | updateObjPdu.objId = ApeConsts.CONFERENCE_OBJ_TABLE_ID; | 510 | updateObjPdu.objId = ApeConsts.CONFERENCE_OBJ_TABLE_ID; |
| 481 | updateObjPdu.subType = tableUpdateItem.type; | 511 | updateObjPdu.subType = tableUpdateItem.type; |
| @@ -493,7 +523,6 @@ class ConferApe extends Ape { | @@ -493,7 +523,6 @@ class ConferApe extends Ape { | ||
| 493 | this.sendUniform(adapterPdu, true); | 523 | this.sendUniform(adapterPdu, true); |
| 494 | } | 524 | } |
| 495 | 525 | ||
| 496 | - | ||
| 497 | /////收到消息处理///////////////////////////////////////////////////////////////////////////////// | 526 | /////收到消息处理///////////////////////////////////////////////////////////////////////////////// |
| 498 | //加入channel成功 | 527 | //加入channel成功 |
| 499 | onJoinChannelHandlerSuccess() { | 528 | onJoinChannelHandlerSuccess() { |
| @@ -506,12 +535,12 @@ class ConferApe extends Ape { | @@ -506,12 +535,12 @@ class ConferApe extends Ape { | ||
| 506 | 535 | ||
| 507 | //如果是host ,开始录制 | 536 | //如果是host ,开始录制 |
| 508 | this.startRecord(); | 537 | this.startRecord(); |
| 509 | - }else if(GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_WAIT&& | ||
| 510 | - GlobalConfig.isHost&& GlobalConfig.isAutoStartClass&& | ||
| 511 | - !GlobalConfig.isRecordPlayBack){ | 538 | + } else if (GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_WAIT && |
| 539 | + GlobalConfig.isHost && GlobalConfig.isAutoStartClass && | ||
| 540 | + !GlobalConfig.isRecordPlayBack) { | ||
| 512 | //自动开始上课的4个条件 | 541 | //自动开始上课的4个条件 |
| 513 | //1.如果自己是host,2.Sass配置的是自动开始上课,3.并且当前是未开始状态,4.当前不是录制回放,开始自动上课 | 542 | //1.如果自己是host,2.Sass配置的是自动开始上课,3.并且当前是未开始状态,4.当前不是录制回放,开始自动上课 |
| 514 | - loger.log('自动开始上课->classStatus:', GlobalConfig.classStatus, " isHost:",GlobalConfig.isHost, " isAutoStartClass:",GlobalConfig.isAutoStartClass, " isRecordPlayBack:",GlobalConfig.isRecordPlayBack); | 543 | + loger.log('自动开始上课->classStatus:', GlobalConfig.classStatus, " isHost:", GlobalConfig.isHost, " isAutoStartClass:", GlobalConfig.isAutoStartClass, " isRecordPlayBack:", GlobalConfig.isRecordPlayBack); |
| 515 | this.startClass(); | 544 | this.startClass(); |
| 516 | } | 545 | } |
| 517 | } | 546 | } |
| @@ -519,7 +548,7 @@ class ConferApe extends Ape { | @@ -519,7 +548,7 @@ class ConferApe extends Ape { | ||
| 519 | //开启计时器 | 548 | //开启计时器 |
| 520 | startTimerCounter() { | 549 | startTimerCounter() { |
| 521 | this.stopTimerCounter(); | 550 | this.stopTimerCounter(); |
| 522 | - if(this.timerCounter){ | 551 | + if (this.timerCounter) { |
| 523 | this.timerCounter.startTimer(); | 552 | this.timerCounter.startTimer(); |
| 524 | } | 553 | } |
| 525 | 554 | ||
| @@ -527,7 +556,7 @@ class ConferApe extends Ape { | @@ -527,7 +556,7 @@ class ConferApe extends Ape { | ||
| 527 | 556 | ||
| 528 | //停止计时器 | 557 | //停止计时器 |
| 529 | stopTimerCounter() { | 558 | stopTimerCounter() { |
| 530 | - if(this.timerCounter){ | 559 | + if (this.timerCounter) { |
| 531 | this.timerCounter.stopTimer(); | 560 | this.timerCounter.stopTimer(); |
| 532 | } | 561 | } |
| 533 | 562 | ||
| @@ -543,15 +572,14 @@ class ConferApe extends Ape { | @@ -543,15 +572,14 @@ class ConferApe extends Ape { | ||
| 543 | loger.warn('当前课堂已经暂停或者未开始,不计时', "classStatus-->", GlobalConfig.classStatus); | 572 | loger.warn('当前课堂已经暂停或者未开始,不计时', "classStatus-->", GlobalConfig.classStatus); |
| 544 | return; | 573 | return; |
| 545 | } | 574 | } |
| 546 | - GlobalConfig.classTimestamp = GlobalConfig.classTimestamp + 1;//计时 | 575 | + GlobalConfig.classTimestamp = GlobalConfig.classTimestamp + 1; //计时 |
| 547 | 576 | ||
| 548 | //老师身份的时候要记录录制的时间 | 577 | //老师身份的时候要记录录制的时间 |
| 549 | - if(GlobalConfig.isHost){ | ||
| 550 | - GlobalConfig.recordTimestamp=GlobalConfig.recordTimestamp+1; | 578 | + if (GlobalConfig.isHost) { |
| 579 | + GlobalConfig.recordTimestamp = GlobalConfig.recordTimestamp + 1; | ||
| 551 | } | 580 | } |
| 552 | //loger.log('课堂进行时间',GlobalConfig.classTimestamp); | 581 | //loger.log('课堂进行时间',GlobalConfig.classTimestamp); |
| 553 | - this._emit(MessageTypes.CLASS_UPDATE_TIMER, {"classTimestamp": GlobalConfig.classTimestamp}); | ||
| 554 | - | 582 | + this._emit(MessageTypes.CLASS_UPDATE_TIMER, { "classTimestamp": GlobalConfig.classTimestamp }); |
| 555 | 583 | ||
| 556 | if (GlobalConfig.classTimestamp % GlobalConfig.updateClassInfoDelay == 0) { | 584 | if (GlobalConfig.classTimestamp % GlobalConfig.updateClassInfoDelay == 0) { |
| 557 | //如果是host身份,需要同步时间给其他人,同时把当前的状态上传到服务器 | 585 | //如果是host身份,需要同步时间给其他人,同时把当前的状态上传到服务器 |
| @@ -560,12 +588,12 @@ class ConferApe extends Ape { | @@ -560,12 +588,12 @@ class ConferApe extends Ape { | ||
| 560 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); | 588 | this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); |
| 561 | 589 | ||
| 562 | //同步消息给其他人 | 590 | //同步消息给其他人 |
| 563 | - this.sendUpdaterClassStatusInfo({"actionType": 1,isStopAllPublishMedia:false}); | 591 | + this.sendUpdaterClassStatusInfo({ "actionType": 1, isStopAllPublishMedia: false }); |
| 564 | } | 592 | } |
| 565 | } | 593 | } |
| 566 | 594 | ||
| 567 | //进行MS动态选点,选择最快的MS服务器地址(录制回放不做处理) | 595 | //进行MS动态选点,选择最快的MS服务器地址(录制回放不做处理) |
| 568 | - if (!GlobalConfig.isRecordPlayBack&&GlobalConfig.classTimestamp % GlobalConfig.msDynamicChooseIpDelay == 0) { | 596 | + if (!GlobalConfig.isRecordPlayBack && GlobalConfig.classTimestamp % GlobalConfig.msDynamicChooseIpDelay == 0) { |
| 569 | this._emit(MessageTypes.SWITCH_MS_IP); | 597 | this._emit(MessageTypes.SWITCH_MS_IP); |
| 570 | } | 598 | } |
| 571 | } | 599 | } |
| @@ -573,22 +601,22 @@ class ConferApe extends Ape { | @@ -573,22 +601,22 @@ class ConferApe extends Ape { | ||
| 573 | tableUpdateHandler(owner, itemIdx, itemData) { | 601 | tableUpdateHandler(owner, itemIdx, itemData) { |
| 574 | try { | 602 | try { |
| 575 | let model = this.unPackPdu(owner, itemIdx, itemData); | 603 | let model = this.unPackPdu(owner, itemIdx, itemData); |
| 576 | - loger.log('课堂数据更新->',model); | 604 | + loger.log('课堂数据更新->', model); |
| 577 | 605 | ||
| 578 | //处理课堂更新的信息 | 606 | //处理课堂更新的信息 |
| 579 | if (model && model.classStatusInfo) { | 607 | if (model && model.classStatusInfo) { |
| 580 | GlobalConfig.setClassStatusInfo(model.classStatusInfo); | 608 | GlobalConfig.setClassStatusInfo(model.classStatusInfo); |
| 581 | 609 | ||
| 582 | - if( model.classStatusInfo.isStopAllPublishMedia){ | 610 | + if (model.classStatusInfo.isStopAllPublishMedia) { |
| 583 | //课堂状态发送改变 需要对当前正在推的流进行停止,因为录制的问题; | 611 | //课堂状态发送改变 需要对当前正在推的流进行停止,因为录制的问题; |
| 584 | this._emit(MessageTypes.STOP_ALL_MEDIA_PUBLISH); | 612 | this._emit(MessageTypes.STOP_ALL_MEDIA_PUBLISH); |
| 585 | } | 613 | } |
| 586 | } | 614 | } |
| 587 | 615 | ||
| 588 | //通知应用层更新课堂状态 | 616 | //通知应用层更新课堂状态 |
| 589 | - let classInfo=GlobalConfig.classStatusInfo; | 617 | + let classInfo = GlobalConfig.classStatusInfo; |
| 590 | loger.log('通知应用层更新课堂状态->CLASS_UPTATE_STATUS') | 618 | loger.log('通知应用层更新课堂状态->CLASS_UPTATE_STATUS') |
| 591 | - this._emit(MessageTypes.CLASS_UPTATE_STATUS,classInfo); | 619 | + this._emit(MessageTypes.CLASS_UPTATE_STATUS, classInfo); |
| 592 | 620 | ||
| 593 | //如果MCU已经断开连接,停止计时器 | 621 | //如果MCU已经断开连接,停止计时器 |
| 594 | if (!this.mcu.connected) { | 622 | if (!this.mcu.connected) { |
| @@ -609,7 +637,6 @@ class ConferApe extends Ape { | @@ -609,7 +637,6 @@ class ConferApe extends Ape { | ||
| 609 | } | 637 | } |
| 610 | } | 638 | } |
| 611 | 639 | ||
| 612 | - | ||
| 613 | conferMsgComingHandler(_data) { | 640 | conferMsgComingHandler(_data) { |
| 614 | //flash RCConferenceSendDataRequestPdu | 641 | //flash RCConferenceSendDataRequestPdu |
| 615 | //loger.warn('conferMsgComingHandler needs to be handled.'); | 642 | //loger.warn('conferMsgComingHandler needs to be handled.'); |
| @@ -623,22 +650,33 @@ class ConferApe extends Ape { | @@ -623,22 +650,33 @@ class ConferApe extends Ape { | ||
| 623 | chatMsg.toNodeID = chatReceivePdu.peer; | 650 | chatMsg.toNodeID = chatReceivePdu.peer; |
| 624 | chatMsg.message = this._rCArrayBufferUtil.uint8ArrayToStr(chatReceivePdu.userData, 2); | 651 | chatMsg.message = this._rCArrayBufferUtil.uint8ArrayToStr(chatReceivePdu.userData, 2); |
| 625 | chatMsg.actionType = chatReceivePdu.actionType; | 652 | chatMsg.actionType = chatReceivePdu.actionType; |
| 626 | - loger.log("conferMsgComingHandler", chatMsg);//{"fromNodeID":418883112,"toNodeID":0,"message":"所有人退出课堂","actionType":1} | 653 | + loger.log("conferMsgComingHandler", chatMsg); //{"fromNodeID":418883112,"toNodeID":0,"message":"所有人退出课堂","actionType":1} |
| 627 | switch (chatMsg.actionType) { | 654 | switch (chatMsg.actionType) { |
| 628 | case ApeConsts.CLASS_ACTION_CLOSE_ALL: | 655 | case ApeConsts.CLASS_ACTION_CLOSE_ALL: |
| 629 | loger.log(chatMsg.message); | 656 | loger.log(chatMsg.message); |
| 630 | //收到课堂关闭,所有人都退出,执行自己关闭的流程 | 657 | //收到课堂关闭,所有人都退出,执行自己关闭的流程 |
| 631 | - this._emit(MessageTypes.CLASS_RUN_EXIT,{'type':1}); | 658 | + this._emit(MessageTypes.CLASS_RUN_EXIT, { 'type': 1 }); |
| 632 | break; | 659 | break; |
| 633 | case ApeConsts.CLASS_ACTION_HANDUP_STATUS_CHANGE: | 660 | case ApeConsts.CLASS_ACTION_HANDUP_STATUS_CHANGE: |
| 634 | - console.log('chatMsg',chatMsg); | ||
| 635 | - let msgObj=null; | ||
| 636 | - try{ | ||
| 637 | - msgObj =JSON.parse(chatMsg.message); | ||
| 638 | - if(msgObj&&msgObj.nodeId==GlobalConfig.nodeId){ | 661 | + console.log('chatMsg', chatMsg); |
| 662 | + let msgObj = null; | ||
| 663 | + try { | ||
| 664 | + msgObj = JSON.parse(chatMsg.message); | ||
| 665 | + if (msgObj && msgObj.nodeId == GlobalConfig.nodeId) { | ||
| 639 | this.changeHandUpStatus(msgObj); | 666 | this.changeHandUpStatus(msgObj); |
| 640 | } | 667 | } |
| 641 | - }catch (err){ | 668 | + } catch (err) { |
| 669 | + loger.warn('chatMsg->JSON数据解析失败'); | ||
| 670 | + } | ||
| 671 | + break; | ||
| 672 | + case ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE: | ||
| 673 | + let msgObj = null; | ||
| 674 | + try { | ||
| 675 | + msgObj = JSON.parse(chatMsg.message); | ||
| 676 | + if (msgObj && msgObj.nodeId == GlobalConfig.nodeId) { | ||
| 677 | + this.changeSilenceStatus(msgObj); | ||
| 678 | + } | ||
| 679 | + } catch (err) { | ||
| 642 | loger.warn('chatMsg->JSON数据解析失败'); | 680 | loger.warn('chatMsg->JSON数据解析失败'); |
| 643 | } | 681 | } |
| 644 | break; | 682 | break; |
| @@ -649,13 +687,13 @@ class ConferApe extends Ape { | @@ -649,13 +687,13 @@ class ConferApe extends Ape { | ||
| 649 | 687 | ||
| 650 | //-------------第三方消息------------------------------ | 688 | //-------------第三方消息------------------------------ |
| 651 | //收到父级页面的消息,需要广播发送出去 | 689 | //收到父级页面的消息,需要广播发送出去 |
| 652 | - onThirdReciveParentMessage(_msg){ | ||
| 653 | - loger.log('收到页面的消息->广播给其他模块->',_msg); | ||
| 654 | - this.sendThirdBroadcastData({to:0,message:_msg}); | 690 | + onThirdReciveParentMessage(_msg) { |
| 691 | + loger.log('收到页面的消息->广播给其他模块->', _msg); | ||
| 692 | + this.sendThirdBroadcastData({ to: 0, message: _msg }); | ||
| 655 | } | 693 | } |
| 656 | //发送第三方广播消息 | 694 | //发送第三方广播消息 |
| 657 | - sendThirdBroadcastData(_param){ | ||
| 658 | - loger.log("发送第三方广播消息->",_param); | 695 | + sendThirdBroadcastData(_param) { |
| 696 | + loger.log("发送第三方广播消息->", _param); | ||
| 659 | if (this._classInfo == null || EngineUtils.isEmptyObject(this._classInfo)) { | 697 | if (this._classInfo == null || EngineUtils.isEmptyObject(this._classInfo)) { |
| 660 | loger.log('发送第三方广播消息->失败->SDK还未初始化数据!'); | 698 | loger.log('发送第三方广播消息->失败->SDK还未初始化数据!'); |
| 661 | if (GlobalConfig.getCurrentStatus().code == 0 || GlobalConfig.getCurrentStatus().code == 1) { | 699 | if (GlobalConfig.getCurrentStatus().code == 0 || GlobalConfig.getCurrentStatus().code == 1) { |
| @@ -667,8 +705,8 @@ class ConferApe extends Ape { | @@ -667,8 +705,8 @@ class ConferApe extends Ape { | ||
| 667 | 705 | ||
| 668 | let thirdBroadcastSendPdu = new pdu['RCThirdSendBroadcastDataRequestPdu']; | 706 | let thirdBroadcastSendPdu = new pdu['RCThirdSendBroadcastDataRequestPdu']; |
| 669 | thirdBroadcastSendPdu.type = pdu.RCPDU_THIRD_BROADCAST_DATA_REQUEST; | 707 | thirdBroadcastSendPdu.type = pdu.RCPDU_THIRD_BROADCAST_DATA_REQUEST; |
| 670 | - thirdBroadcastSendPdu.initiator = this._classInfo.nodeId;//发起人 | ||
| 671 | - thirdBroadcastSendPdu.peer = parseInt(_param.to)||0;//发送给谁,公聊的时候是0,私聊的时候是指定的用户id | 708 | + thirdBroadcastSendPdu.initiator = this._classInfo.nodeId; //发起人 |
| 709 | + thirdBroadcastSendPdu.peer = parseInt(_param.to) || 0; //发送给谁,公聊的时候是0,私聊的时候是指定的用户id | ||
| 672 | thirdBroadcastSendPdu.isPublic = true; | 710 | thirdBroadcastSendPdu.isPublic = true; |
| 673 | thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + _param.message); | 711 | thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + _param.message); |
| 674 | 712 | ||
| @@ -681,9 +719,8 @@ class ConferApe extends Ape { | @@ -681,9 +719,8 @@ class ConferApe extends Ape { | ||
| 681 | } | 719 | } |
| 682 | } | 720 | } |
| 683 | 721 | ||
| 684 | - | ||
| 685 | //监听第三方消息通道消息 | 722 | //监听第三方消息通道消息 |
| 686 | - onThirdBroadcastDataHandler(_data){ | 723 | + onThirdBroadcastDataHandler(_data) { |
| 687 | //loger.log("监听第三方消息通道消息->",_data); | 724 | //loger.log("监听第三方消息通道消息->",_data); |
| 688 | let thirdBroadcastReceivePdu = pdu['RCThirdSendBroadcastDataRequestPdu'].decode(_data); | 725 | let thirdBroadcastReceivePdu = pdu['RCThirdSendBroadcastDataRequestPdu'].decode(_data); |
| 689 | let thirdMessage = {}; | 726 | let thirdMessage = {}; |
| @@ -692,7 +729,7 @@ class ConferApe extends Ape { | @@ -692,7 +729,7 @@ class ConferApe extends Ape { | ||
| 692 | //loger.log("监听第三方消息通道消息->1", thirdMessage); | 729 | //loger.log("监听第三方消息通道消息->1", thirdMessage); |
| 693 | thirdMessage.message = this._rCArrayBufferUtil.uint8ArrayToStr(thirdBroadcastReceivePdu.message, 2); | 730 | thirdMessage.message = this._rCArrayBufferUtil.uint8ArrayToStr(thirdBroadcastReceivePdu.message, 2); |
| 694 | loger.log("监听第三方消息通道消息->", thirdMessage); | 731 | loger.log("监听第三方消息通道消息->", thirdMessage); |
| 695 | - if(this.thirdMessage){ | 732 | + if (this.thirdMessage) { |
| 696 | this.thirdMessage.sendMessageToParent(thirdMessage.message); | 733 | this.thirdMessage.sendMessageToParent(thirdMessage.message); |
| 697 | } | 734 | } |
| 698 | } | 735 | } |
| @@ -703,8 +740,8 @@ class ConferApe extends Ape { | @@ -703,8 +740,8 @@ class ConferApe extends Ape { | ||
| 703 | try { | 740 | try { |
| 704 | let conferRecordSendPdu = pdu['RCConferenceRecordRequestPdu'].decode(_data); | 741 | let conferRecordSendPdu = pdu['RCConferenceRecordRequestPdu'].decode(_data); |
| 705 | // {"initiator":820461225,"record":false,"classTime":3213,"filename":"h5dev/20170410/1437784290_20170410.rec"} | 742 | // {"initiator":820461225,"record":false,"classTime":3213,"filename":"h5dev/20170410/1437784290_20170410.rec"} |
| 706 | - loger.log("录制回放控制操作成功->",conferRecordSendPdu); | ||
| 707 | - if(conferRecordSendPdu&&conferRecordSendPdu.record==true||conferRecordSendPdu.record=="true"){ | 743 | + loger.log("录制回放控制操作成功->", conferRecordSendPdu); |
| 744 | + if (conferRecordSendPdu && conferRecordSendPdu.record == true || conferRecordSendPdu.record == "true") { | ||
| 708 | //每次开启录制的时候,需要把当前显示的文档数据更新一次,否则无法录制已经显示的文件 | 745 | //每次开启录制的时候,需要把当前显示的文档数据更新一次,否则无法录制已经显示的文件 |
| 709 | this._emit(MessageTypes.CLASS_RECORD_SUCCESS); | 746 | this._emit(MessageTypes.CLASS_RECORD_SUCCESS); |
| 710 | } | 747 | } |
| @@ -726,20 +763,20 @@ class ConferApe extends Ape { | @@ -726,20 +763,20 @@ class ConferApe extends Ape { | ||
| 726 | 763 | ||
| 727 | //更新人员列表数据 | 764 | //更新人员列表数据 |
| 728 | rosterUpdateHandler(nodeId, nodeData) { | 765 | rosterUpdateHandler(nodeId, nodeData) { |
| 729 | - nodeData.userRole=ApeConsts.userTypes[nodeData.role]; | 766 | + nodeData.userRole = ApeConsts.userTypes[nodeData.role]; |
| 730 | //如果是自己的信息,不处理跳过 | 767 | //如果是自己的信息,不处理跳过 |
| 731 | if (nodeId == GlobalConfig.nodeId) { | 768 | if (nodeId == GlobalConfig.nodeId) { |
| 732 | //loger.log("自己加入课堂的消息->",nodeId,"role-->", nodeData.role, ApeConsts.userTypes[nodeData.role]); | 769 | //loger.log("自己加入课堂的消息->",nodeId,"role-->", nodeData.role, ApeConsts.userTypes[nodeData.role]); |
| 733 | //自己加入的时候,需要做一下判断操作,如果满足以下3个条件就要暂停课堂: | 770 | //自己加入的时候,需要做一下判断操作,如果满足以下3个条件就要暂停课堂: |
| 734 | // 1.当前课堂只有自己;2.自己的身份不是host;3当前的课堂状态为(CLASS_STATUS_STARTED= 1;//直播中) | 771 | // 1.当前课堂只有自己;2.自己的身份不是host;3当前的课堂状态为(CLASS_STATUS_STARTED= 1;//直播中) |
| 735 | - let rosterLen=Object.keys(this.rosters).length; | ||
| 736 | - if(rosterLen<1&&!GlobalConfig.isHost&&GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_STARTED){ | 772 | + let rosterLen = Object.keys(this.rosters).length; |
| 773 | + if (rosterLen < 1 && !GlobalConfig.isHost && GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_STARTED) { | ||
| 737 | loger.warn("当前课堂没有老师->暂停课堂"); | 774 | loger.warn("当前课堂没有老师->暂停课堂"); |
| 738 | - this.pauseClass({isForce:true}); | 775 | + this.pauseClass({ isForce: true }); |
| 739 | this.stopRecord(true); | 776 | this.stopRecord(true); |
| 740 | } | 777 | } |
| 741 | //处理用户信息 | 778 | //处理用户信息 |
| 742 | - this.unPackRosterInfo(nodeId,nodeData); | 779 | + this.unPackRosterInfo(nodeId, nodeData); |
| 743 | return; | 780 | return; |
| 744 | } | 781 | } |
| 745 | 782 | ||
| @@ -752,10 +789,10 @@ class ConferApe extends Ape { | @@ -752,10 +789,10 @@ class ConferApe extends Ape { | ||
| 752 | if (nodeData.role == ApeConsts.NR_HOST && GlobalConfig.isHost) { | 789 | if (nodeData.role == ApeConsts.NR_HOST && GlobalConfig.isHost) { |
| 753 | this.kickOutRoster(); | 790 | this.kickOutRoster(); |
| 754 | return; | 791 | return; |
| 755 | - }else if(nodeData.userId==GlobalConfig.userId&&GlobalConfig.userId!="0"){ | ||
| 756 | - loger.log("异地登陆->userId->",GlobalConfig.userId); | 792 | + } else if (nodeData.userId == GlobalConfig.userId && GlobalConfig.userId != "0") { |
| 793 | + loger.log("异地登陆->userId->", GlobalConfig.userId); | ||
| 757 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_REMOTE_LANDING); | 794 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_REMOTE_LANDING); |
| 758 | - this._emit(MessageTypes.CLASS_RUN_EXIT,{'type':1}); | 795 | + this._emit(MessageTypes.CLASS_RUN_EXIT, { 'type': 1 }); |
| 759 | } | 796 | } |
| 760 | } | 797 | } |
| 761 | /*if (parseInt(nodeId) > GlobalConfig.nodeId) { | 798 | /*if (parseInt(nodeId) > GlobalConfig.nodeId) { |
| @@ -779,10 +816,10 @@ class ConferApe extends Ape { | @@ -779,10 +816,10 @@ class ConferApe extends Ape { | ||
| 779 | }*/ | 816 | }*/ |
| 780 | 817 | ||
| 781 | //处理用户信息 | 818 | //处理用户信息 |
| 782 | - this.unPackRosterInfo(nodeId,nodeData); | 819 | + this.unPackRosterInfo(nodeId, nodeData); |
| 783 | } | 820 | } |
| 784 | //处理用户信息 | 821 | //处理用户信息 |
| 785 | - unPackRosterInfo(nodeId,nodeData){ | 822 | + unPackRosterInfo(nodeId, nodeData) { |
| 786 | let rosterExists = this.rosters[nodeId]; | 823 | let rosterExists = this.rosters[nodeId]; |
| 787 | this.rosters[nodeId] = nodeData; | 824 | this.rosters[nodeId] = nodeData; |
| 788 | let userDataObj = null; | 825 | let userDataObj = null; |
| @@ -795,19 +832,19 @@ class ConferApe extends Ape { | @@ -795,19 +832,19 @@ class ConferApe extends Ape { | ||
| 795 | let newNodeData = nodeData; | 832 | let newNodeData = nodeData; |
| 796 | newNodeData.userData = userDataObj; | 833 | newNodeData.userData = userDataObj; |
| 797 | //如果是监课,不告诉其他人 | 834 | //如果是监课,不告诉其他人 |
| 798 | - if (nodeData.role == ApeConsts.NR_INVISIBLE&&GlobalConfig.userRole!=ApeConsts.invisible) { | 835 | + if (nodeData.role == ApeConsts.NR_INVISIBLE && GlobalConfig.userRole != ApeConsts.invisible) { |
| 799 | loger.log("NR_INVISIBLE"); | 836 | loger.log("NR_INVISIBLE"); |
| 800 | return; | 837 | return; |
| 801 | } | 838 | } |
| 802 | if (!rosterExists) { | 839 | if (!rosterExists) { |
| 803 | - loger.log("人员加入->",newNodeData); | ||
| 804 | - this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); | 840 | + loger.log("人员加入->", newNodeData); |
| 841 | + this._emit(MessageTypes.CLASS_INSERT_ROSTER, { "nodeId": nodeId, "nodeData": newNodeData }); | ||
| 805 | this.emitRosterChange(); | 842 | this.emitRosterChange(); |
| 806 | 843 | ||
| 807 | } else { | 844 | } else { |
| 808 | //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists); | 845 | //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists); |
| 809 | - loger.log("人员更新信息->",newNodeData); | ||
| 810 | - this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); | 846 | + loger.log("人员更新信息->", newNodeData); |
| 847 | + this._emit(MessageTypes.CLASS_UPDATE_ROSTER, { "nodeId": nodeId, "nodeData": newNodeData }); | ||
| 811 | } | 848 | } |
| 812 | 849 | ||
| 813 | } | 850 | } |
| @@ -815,7 +852,7 @@ class ConferApe extends Ape { | @@ -815,7 +852,7 @@ class ConferApe extends Ape { | ||
| 815 | //踢出用户 | 852 | //踢出用户 |
| 816 | kickOutRoster() { | 853 | kickOutRoster() { |
| 817 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_KICK_OUT); | 854 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_KICK_OUT); |
| 818 | - this._emit(MessageTypes.CLASS_RUN_EXIT,{'type':1}); | 855 | + this._emit(MessageTypes.CLASS_RUN_EXIT, { 'type': 1 }); |
| 819 | } | 856 | } |
| 820 | 857 | ||
| 821 | //视频模块发生更新,人员状态需要更新 | 858 | //视频模块发生更新,人员状态需要更新 |
| @@ -824,7 +861,7 @@ class ConferApe extends Ape { | @@ -824,7 +861,7 @@ class ConferApe extends Ape { | ||
| 824 | //如果视频消息中channel的占用人 fromNodeId在人员列表中不存在,需要释放这channel,因为这个有可能是之前没释放成功的 | 861 | //如果视频消息中channel的占用人 fromNodeId在人员列表中不存在,需要释放这channel,因为这个有可能是之前没释放成功的 |
| 825 | if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING && this.rosters[_param.fromNodeId] == null) { | 862 | if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING && this.rosters[_param.fromNodeId] == null) { |
| 826 | loger.log("媒体模块被占用->占有人已经不存在课堂中->释放->", _param); | 863 | loger.log("媒体模块被占用->占有人已经不存在课堂中->释放->", _param); |
| 827 | - this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": _param.fromNodeId}); | 864 | + this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, { "nodeId": _param.fromNodeId }); |
| 828 | } | 865 | } |
| 829 | 866 | ||
| 830 | /* if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING) { | 867 | /* if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING) { |
| @@ -855,8 +892,8 @@ class ConferApe extends Ape { | @@ -855,8 +892,8 @@ class ConferApe extends Ape { | ||
| 855 | }*/ | 892 | }*/ |
| 856 | } | 893 | } |
| 857 | //设备状态更新 | 894 | //设备状态更新 |
| 858 | - updaterUserDeviecStatusChange(_data){ | ||
| 859 | - loger.log("音视频设备状态更新->",_data); | 895 | + updaterUserDeviecStatusChange(_data) { |
| 896 | + loger.log("音视频设备状态更新->", _data); | ||
| 860 | this.updateUserInfo(); | 897 | this.updateUserInfo(); |
| 861 | } | 898 | } |
| 862 | 899 | ||
| @@ -865,15 +902,15 @@ class ConferApe extends Ape { | @@ -865,15 +902,15 @@ class ConferApe extends Ape { | ||
| 865 | if (GlobalConfig.nodeId == nodeId) { | 902 | if (GlobalConfig.nodeId == nodeId) { |
| 866 | loger.log("自己离开课堂"); | 903 | loger.log("自己离开课堂"); |
| 867 | // 自己退出 | 904 | // 自己退出 |
| 868 | - this._emit(MessageTypes.CLASS_RUN_EXIT,{'type':0}); | 905 | + this._emit(MessageTypes.CLASS_RUN_EXIT, { 'type': 0 }); |
| 869 | } else { | 906 | } else { |
| 870 | - let user=this.rosters[nodeId]; | ||
| 871 | - if(user){ | ||
| 872 | - loger.log(nodeId, "->离开课堂->身份->",user.role); | 907 | + let user = this.rosters[nodeId]; |
| 908 | + if (user) { | ||
| 909 | + loger.log(nodeId, "->离开课堂->身份->", user.role); | ||
| 873 | } | 910 | } |
| 874 | delete this.rosters[nodeId]; | 911 | delete this.rosters[nodeId]; |
| 875 | this.emitRosterChange(); | 912 | this.emitRosterChange(); |
| 876 | - this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId}); | 913 | + this._emit(MessageTypes.CLASS_DELETE_ROSTER, { "nodeId": nodeId }); |
| 877 | 914 | ||
| 878 | //当前人员列表中抽一个人来检查离开人员是否占用频道 | 915 | //当前人员列表中抽一个人来检查离开人员是否占用频道 |
| 879 | for (let key in this.rosters) { | 916 | for (let key in this.rosters) { |
| @@ -881,10 +918,10 @@ class ConferApe extends Ape { | @@ -881,10 +918,10 @@ class ConferApe extends Ape { | ||
| 881 | //如果抽到的人是自己就处理以下操作 | 918 | //如果抽到的人是自己就处理以下操作 |
| 882 | if (randNodeId == GlobalConfig.nodeId) { | 919 | if (randNodeId == GlobalConfig.nodeId) { |
| 883 | loger.log(randNodeId, "有权限检查离开的人员是否占用channel"); | 920 | loger.log(randNodeId, "有权限检查离开的人员是否占用channel"); |
| 884 | - this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId}); | 921 | + this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, { "nodeId": nodeId }); |
| 885 | //如果离开的人员是老师,需要暂停当前的课堂 | 922 | //如果离开的人员是老师,需要暂停当前的课堂 |
| 886 | 923 | ||
| 887 | - if(user&&user.role==ApeConsts.NR_HOST){ | 924 | + if (user && user.role == ApeConsts.NR_HOST) { |
| 888 | this.pauseClass(); | 925 | this.pauseClass(); |
| 889 | //强制停止录制 | 926 | //强制停止录制 |
| 890 | this.stopRecord(true); | 927 | this.stopRecord(true); |
| @@ -912,28 +949,29 @@ class ConferApe extends Ape { | @@ -912,28 +949,29 @@ class ConferApe extends Ape { | ||
| 912 | return null; | 949 | return null; |
| 913 | } | 950 | } |
| 914 | let classStatusInfo = new pdu['RCClassStatusInfoPdu']; | 951 | let classStatusInfo = new pdu['RCClassStatusInfoPdu']; |
| 915 | - classStatusInfo.nodeId = GlobalConfig.nodeId;//mcu中的唯一ID | 952 | + classStatusInfo.nodeId = GlobalConfig.nodeId; //mcu中的唯一ID |
| 916 | classStatusInfo.userId = GlobalConfig.userId; | 953 | classStatusInfo.userId = GlobalConfig.userId; |
| 917 | classStatusInfo.userName = GlobalConfig.userName; | 954 | classStatusInfo.userName = GlobalConfig.userName; |
| 918 | - classStatusInfo.siteId = GlobalConfig.siteId;//站点号 | 955 | + classStatusInfo.siteId = GlobalConfig.siteId; //站点号 |
| 919 | classStatusInfo.classId = GlobalConfig.classId; | 956 | classStatusInfo.classId = GlobalConfig.classId; |
| 920 | classStatusInfo.className = GlobalConfig.className; | 957 | classStatusInfo.className = GlobalConfig.className; |
| 921 | - classStatusInfo.classType = GlobalConfig.classType;//课堂类型 | ||
| 922 | - classStatusInfo.classStatus = GlobalConfig.classStatus;//课堂的状态 | ||
| 923 | - classStatusInfo.classStartTime = GlobalConfig.classStartTime;//课堂点击开始时间 | ||
| 924 | - classStatusInfo.classStopTime = GlobalConfig.classStopTime;//最后一次停止的时间(点暂停或结束),每次发送数据都获取当前时间戳 | ||
| 925 | - classStatusInfo.classTimestamp = GlobalConfig.classTimestamp;//相对于点开始课堂的时间戳 | ||
| 926 | - classStatusInfo.classBeginTime = GlobalConfig.classBeginTime;//课堂创建的时间,这个是Sass返回的 | ||
| 927 | - classStatusInfo.classEndTime = GlobalConfig.classEndTime;//课堂结束的时间,这个是Sass返回的 | ||
| 928 | - classStatusInfo.recordStatus = GlobalConfig.recordStatus;//当前录制状态 | ||
| 929 | - classStatusInfo.recordTimestamp = GlobalConfig.recordTimestamp;//相对于首次开始录制的时间戳 | ||
| 930 | - classStatusInfo.recordFileName = GlobalConfig.recordFileName;//录制的文件名 | ||
| 931 | - classStatusInfo.recordDownloadUrl = GlobalConfig.recordDownloadUrl;//下载地址 | ||
| 932 | - classStatusInfo.serverTimestamp = GlobalConfig.serverTimestamp;//当前的系统时间戳 | ||
| 933 | - classStatusInfo.activeDocId = GlobalConfig.activeDocId;//当前激活的文档id | ||
| 934 | - classStatusInfo.activeDocCurPage = GlobalConfig.activeDocCurPage;//当前激活的文档的当前页 | ||
| 935 | - classStatusInfo.isStopAllPublishMedia=_param.isStopAllPublishMedia||false; | ||
| 936 | - classStatusInfo.currentSceneTableId=GlobalConfig.currentSceneTableId; | 958 | + classStatusInfo.classType = GlobalConfig.classType; //课堂类型 |
| 959 | + classStatusInfo.classStatus = GlobalConfig.classStatus; //课堂的状态 | ||
| 960 | + classStatusInfo.classStartTime = GlobalConfig.classStartTime; //课堂点击开始时间 | ||
| 961 | + classStatusInfo.classStopTime = GlobalConfig.classStopTime; //最后一次停止的时间(点暂停或结束),每次发送数据都获取当前时间戳 | ||
| 962 | + classStatusInfo.classTimestamp = GlobalConfig.classTimestamp; //相对于点开始课堂的时间戳 | ||
| 963 | + classStatusInfo.classBeginTime = GlobalConfig.classBeginTime; //课堂创建的时间,这个是Sass返回的 | ||
| 964 | + classStatusInfo.classEndTime = GlobalConfig.classEndTime; //课堂结束的时间,这个是Sass返回的 | ||
| 965 | + classStatusInfo.recordStatus = GlobalConfig.recordStatus; //当前录制状态 | ||
| 966 | + classStatusInfo.recordTimestamp = GlobalConfig.recordTimestamp; //相对于首次开始录制的时间戳 | ||
| 967 | + classStatusInfo.recordFileName = GlobalConfig.recordFileName; //录制的文件名 | ||
| 968 | + classStatusInfo.recordDownloadUrl = GlobalConfig.recordDownloadUrl; //下载地址 | ||
| 969 | + classStatusInfo.serverTimestamp = GlobalConfig.serverTimestamp; //当前的系统时间戳 | ||
| 970 | + classStatusInfo.activeDocId = GlobalConfig.activeDocId; //当前激活的文档id | ||
| 971 | + classStatusInfo.activeDocCurPage = GlobalConfig.activeDocCurPage; //当前激活的文档的当前页 | ||
| 972 | + classStatusInfo.isStopAllPublishMedia = _param.isStopAllPublishMedia || false; | ||
| 973 | + classStatusInfo.currentSceneTableId = GlobalConfig.currentSceneTableId; | ||
| 974 | + classStatusInfo.silence = GlobalConfig.silence; | ||
| 937 | //loger.log("classStatusInfo--->", classStatusInfo); | 975 | //loger.log("classStatusInfo--->", classStatusInfo); |
| 938 | 976 | ||
| 939 | /* | 977 | /* |
| @@ -896,6 +896,7 @@ message RCNodeInfoRecordPdu { | @@ -896,6 +896,7 @@ message RCNodeInfoRecordPdu { | ||
| 896 | optional string province=27; | 896 | optional string province=27; |
| 897 | optional string isp=28; | 897 | optional string isp=28; |
| 898 | repeated MsListItemPdu msList = 29; | 898 | repeated MsListItemPdu msList = 29; |
| 899 | + optional string selfSilence = 30; | ||
| 899 | } | 900 | } |
| 900 | 901 | ||
| 901 | message RCVotingPollSettingsPdu { | 902 | message RCVotingPollSettingsPdu { |
| @@ -991,6 +992,7 @@ message RCClassStatusInfoPdu { | @@ -991,6 +992,7 @@ message RCClassStatusInfoPdu { | ||
| 991 | optional uint32 active_doc_cur_page=21;//当前激活的文档的当前页 | 992 | optional uint32 active_doc_cur_page=21;//当前激活的文档的当前页 |
| 992 | optional bool isStopAllPublishMedia=22;//是否停止推流 | 993 | optional bool isStopAllPublishMedia=22;//是否停止推流 |
| 993 | optional uint32 currentSceneTableId=23;//文档区域的当前模块id | 994 | optional uint32 currentSceneTableId=23;//文档区域的当前模块id |
| 995 | + optional bool silence=24;//课堂禁言 | ||
| 994 | } | 996 | } |
| 995 | 997 | ||
| 996 | message RCConferenceRecordRequestPdu { | 998 | message RCConferenceRecordRequestPdu { |
-
请 注册 或 登录 后发表评论