正在显示
3 个修改的文件
包含
68 行增加
和
35 行删除
| @@ -57,7 +57,7 @@ export default class MessageEntrance extends Emiter { | @@ -57,7 +57,7 @@ export default class MessageEntrance extends Emiter { | ||
| 57 | constructor() { | 57 | constructor() { |
| 58 | super(); | 58 | super(); |
| 59 | //sdk 信息 | 59 | //sdk 信息 |
| 60 | - GlobalConfig.sdkVersion="v1.61.0.20170729"; | 60 | + GlobalConfig.sdkVersion="v1.62.3.20170731"; |
| 61 | loger.warn("sdkVersion:"+GlobalConfig.sdkVersion); | 61 | loger.warn("sdkVersion:"+GlobalConfig.sdkVersion); |
| 62 | 62 | ||
| 63 | //获取设备和系统信息 | 63 | //获取设备和系统信息 |
| @@ -300,9 +300,22 @@ export default class MessageEntrance extends Emiter { | @@ -300,9 +300,22 @@ export default class MessageEntrance extends Emiter { | ||
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | //mcu异常监听 | 302 | //mcu异常监听 |
| 303 | - _mcuErrorHandler(_data, _option) { | ||
| 304 | - let option = _option || ""; | ||
| 305 | - let errorMessage = {"code": _data, "reson": MessageTypes.ErrorReson[_data] + " " + option}; | 303 | + _mcuErrorHandler(_data) { |
| 304 | + let errorMessage={}; | ||
| 305 | + | ||
| 306 | + //目前只有 userId和身份相同时被踢的时候有type值判断 | ||
| 307 | + switch (_data.type){ | ||
| 308 | + case MessageTypes.ERR_CLASS_KICK_OUT: | ||
| 309 | + case MessageTypes.ERR_CLASS_REMOTE_LANDING: | ||
| 310 | + if(_data){ | ||
| 311 | + errorMessage = {"code": _data.type, "reson": MessageTypes.ErrorReson[_data.type],"data":_data.data}; | ||
| 312 | + } | ||
| 313 | + break; | ||
| 314 | + default : | ||
| 315 | + errorMessage = {"code": _data, "reson": MessageTypes.ErrorReson[_data],"data":{}}; | ||
| 316 | + break; | ||
| 317 | + } | ||
| 318 | + | ||
| 306 | this._emit(MessageTypes.ERROR_EVENT, errorMessage); | 319 | this._emit(MessageTypes.ERROR_EVENT, errorMessage); |
| 307 | loger.error("MCU_ERROR", errorMessage); | 320 | loger.error("MCU_ERROR", errorMessage); |
| 308 | } | 321 | } |
| @@ -736,12 +749,17 @@ export default class MessageEntrance extends Emiter { | @@ -736,12 +749,17 @@ export default class MessageEntrance extends Emiter { | ||
| 736 | GlobalConfig.hlsPullListFinal = GlobalConfig.rsPullListFinal; | 749 | GlobalConfig.hlsPullListFinal = GlobalConfig.rsPullListFinal; |
| 737 | } | 750 | } |
| 738 | 751 | ||
| 752 | + if(!ServerConfig.localServerJson||!ServerConfig.localServerJson.MCU||!ServerConfig.localServerJson.MS){ | ||
| 753 | + loger.warn("课堂最终使用的服务列表->来自Sass"); | ||
| 754 | + }else { | ||
| 739 | loger.warn("课堂最终使用的服务列表->来自本地Server.json"); | 755 | loger.warn("课堂最终使用的服务列表->来自本地Server.json"); |
| 740 | - loger.warn(" GlobalConfig.mcuListFinal", GlobalConfig.mcuListFinal); | ||
| 741 | - loger.warn(" GlobalConfig.msListFinal", GlobalConfig.msListFinal); | ||
| 742 | - loger.warn(" GlobalConfig.rtmpPullListFinal", GlobalConfig.rtmpPullListFinal); | ||
| 743 | - loger.warn(" GlobalConfig.hlsListFinal", GlobalConfig.hlsPullListFinal); | ||
| 744 | - loger.warn(" GlobalConfig.rsListFinal", GlobalConfig.rsPullListFinal); | 756 | + } |
| 757 | + | ||
| 758 | + loger.warn("mcuListFinal", GlobalConfig.mcuListFinal); | ||
| 759 | + loger.warn("msListFinal", GlobalConfig.msListFinal); | ||
| 760 | + loger.warn("rtmpPullListFinal", GlobalConfig.rtmpPullListFinal); | ||
| 761 | + loger.warn("hlsListFinal", GlobalConfig.hlsPullListFinal); | ||
| 762 | + loger.warn("rsListFinal", GlobalConfig.rsPullListFinal); | ||
| 745 | } | 763 | } |
| 746 | //从Sass中选择的mcu、ms列表 | 764 | //从Sass中选择的mcu、ms列表 |
| 747 | _choiceMcuAndMsListFromSass() { | 765 | _choiceMcuAndMsListFromSass() { |
| @@ -1422,7 +1440,7 @@ export default class MessageEntrance extends Emiter { | @@ -1422,7 +1440,7 @@ export default class MessageEntrance extends Emiter { | ||
| 1422 | 1440 | ||
| 1423 | //是否自动开始(身份是host的时候才用到的) | 1441 | //是否自动开始(身份是host的时候才用到的) |
| 1424 | GlobalConfig.isAutoStartClass = _data.autoRecord || 0; | 1442 | GlobalConfig.isAutoStartClass = _data.autoRecord || 0; |
| 1425 | - | 1443 | + GlobalConfig.logUrl=_data.logUrl||""; |
| 1426 | GlobalConfig.serverTime = _data.serverTime || new Date().getTime(); //获取服务器时间戳 | 1444 | GlobalConfig.serverTime = _data.serverTime || new Date().getTime(); //获取服务器时间戳 |
| 1427 | GlobalConfig.serverAndLoacTimeDistanc = (new Date().getTime() - GlobalConfig.serverTime) / 1000; //当前系统时间和服务器时间的差值 (秒) | 1445 | GlobalConfig.serverAndLoacTimeDistanc = (new Date().getTime() - GlobalConfig.serverTime) / 1000; //当前系统时间和服务器时间的差值 (秒) |
| 1428 | loger.warn("服务器时间:" + GlobalConfig.serverTime + " 系统时间:" + new Date().getTime() + " 时间差:" + GlobalConfig.serverAndLoacTimeDistanc); | 1446 | loger.warn("服务器时间:" + GlobalConfig.serverTime + " 系统时间:" + new Date().getTime() + " 时间差:" + GlobalConfig.serverAndLoacTimeDistanc); |
| @@ -518,6 +518,7 @@ GlobalConfig.siteId_letv = 'shchuanbao'; //乐视,MS不需要动态选点的 | @@ -518,6 +518,7 @@ GlobalConfig.siteId_letv = 'shchuanbao'; //乐视,MS不需要动态选点的 | ||
| 518 | GlobalConfig.ssTunnelAppURL = ''; //屏幕共享插件的地址 | 518 | GlobalConfig.ssTunnelAppURL = ''; //屏幕共享插件的地址 |
| 519 | GlobalConfig.serverTime = 0; //服务器当前时间戳 | 519 | GlobalConfig.serverTime = 0; //服务器当前时间戳 |
| 520 | GlobalConfig.serverAndLoacTimeDistanc = 0; //本地时间和服务器时间错的差值; | 520 | GlobalConfig.serverAndLoacTimeDistanc = 0; //本地时间和服务器时间错的差值; |
| 521 | +GlobalConfig.logUrl = ""; //日志上报地址; | ||
| 521 | 522 | ||
| 522 | GlobalConfig.rosterNumber=0;//当前总人数 | 523 | GlobalConfig.rosterNumber=0;//当前总人数 |
| 523 | 524 |
| @@ -26,7 +26,7 @@ class ConferApe extends Ape { | @@ -26,7 +26,7 @@ class ConferApe extends Ape { | ||
| 26 | ); | 26 | ); |
| 27 | 27 | ||
| 28 | this.rosters = {}; //用户列表 | 28 | this.rosters = {}; //用户列表 |
| 29 | - this.rosterLen=0;//当前课堂人数 | 29 | + this.rosterLen = 0;//当前课堂人数 |
| 30 | this.timerCounter = new TimerCounter(); //计时器 | 30 | this.timerCounter = new TimerCounter(); //计时器 |
| 31 | 31 | ||
| 32 | //第三方消息控制 parent和Iframe直接的通讯 | 32 | //第三方消息控制 parent和Iframe直接的通讯 |
| @@ -150,7 +150,7 @@ class ConferApe extends Ape { | @@ -150,7 +150,7 @@ class ConferApe extends Ape { | ||
| 150 | nodeInfoRecordPdu.explorer = GlobalConfig.explorer; | 150 | nodeInfoRecordPdu.explorer = GlobalConfig.explorer; |
| 151 | nodeInfoRecordPdu.explorerVersion = GlobalConfig.explorerVersion; | 151 | nodeInfoRecordPdu.explorerVersion = GlobalConfig.explorerVersion; |
| 152 | nodeInfoRecordPdu.os = GlobalConfig.os; | 152 | nodeInfoRecordPdu.os = GlobalConfig.os; |
| 153 | - nodeInfoRecordPdu.sdkVersion=GlobalConfig.sdkVersion||"未知版本"; | 153 | + nodeInfoRecordPdu.sdkVersion = GlobalConfig.sdkVersion || "未知版本"; |
| 154 | 154 | ||
| 155 | return nodeInfoRecordPdu; | 155 | return nodeInfoRecordPdu; |
| 156 | } | 156 | } |
| @@ -449,7 +449,7 @@ class ConferApe extends Ape { | @@ -449,7 +449,7 @@ class ConferApe extends Ape { | ||
| 449 | 449 | ||
| 450 | //将指定nodeId的人踢出课堂 | 450 | //将指定nodeId的人踢出课堂 |
| 451 | kickOutRosterFormNodeId(_param) { | 451 | kickOutRosterFormNodeId(_param) { |
| 452 | - if(GlobalConfig.isNormal){ | 452 | + if (GlobalConfig.isNormal) { |
| 453 | loger.warn("普通身份没有踢人的权限"); | 453 | loger.warn("普通身份没有踢人的权限"); |
| 454 | return; | 454 | return; |
| 455 | } | 455 | } |
| @@ -747,10 +747,10 @@ class ConferApe extends Ape { | @@ -747,10 +747,10 @@ class ConferApe extends Ape { | ||
| 747 | onThirdReciveParentMessage(_msg) { | 747 | onThirdReciveParentMessage(_msg) { |
| 748 | loger.log('收到页面的消息->广播给其他模块->', _msg); | 748 | loger.log('收到页面的消息->广播给其他模块->', _msg); |
| 749 | //尝试将外部传入的数据转换为JSON 字符串 | 749 | //尝试将外部传入的数据转换为JSON 字符串 |
| 750 | - let _message=_msg; | ||
| 751 | - try{ | ||
| 752 | - _message=JSON.parse(_msg); | ||
| 753 | - }catch(err){ | 750 | + let _message = _msg; |
| 751 | + try { | ||
| 752 | + _message = JSON.parse(_msg); | ||
| 753 | + } catch (err) { | ||
| 754 | 754 | ||
| 755 | } | 755 | } |
| 756 | this.sendThirdBroadcastData({to: 0, message: _message}); | 756 | this.sendThirdBroadcastData({to: 0, message: _message}); |
| @@ -773,12 +773,12 @@ class ConferApe extends Ape { | @@ -773,12 +773,12 @@ class ConferApe extends Ape { | ||
| 773 | thirdBroadcastSendPdu.initiator = this._classInfo.nodeId; //发起人 | 773 | thirdBroadcastSendPdu.initiator = this._classInfo.nodeId; //发起人 |
| 774 | thirdBroadcastSendPdu.peer = parseInt(_param.to) || 0; //发送给谁,公聊的时候是0,私聊的时候是指定的用户id | 774 | thirdBroadcastSendPdu.peer = parseInt(_param.to) || 0; //发送给谁,公聊的时候是0,私聊的时候是指定的用户id |
| 775 | thirdBroadcastSendPdu.isPublic = true; | 775 | thirdBroadcastSendPdu.isPublic = true; |
| 776 | - let messageStr=_param.message||""; | 776 | + let messageStr = _param.message || ""; |
| 777 | 777 | ||
| 778 | //尝试把信息转换为JSON 字符串,如果是字符串就不需要转 | 778 | //尝试把信息转换为JSON 字符串,如果是字符串就不需要转 |
| 779 | - try{ | ||
| 780 | - messageStr=JSON.stringify(messageStr); | ||
| 781 | - }catch (err){ | 779 | + try { |
| 780 | + messageStr = JSON.stringify(messageStr); | ||
| 781 | + } catch (err) { | ||
| 782 | 782 | ||
| 783 | } | 783 | } |
| 784 | thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + messageStr); | 784 | thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + messageStr); |
| @@ -802,7 +802,7 @@ class ConferApe extends Ape { | @@ -802,7 +802,7 @@ class ConferApe extends Ape { | ||
| 802 | //loger.log("监听第三方消息通道消息->1", thirdMessage); | 802 | //loger.log("监听第三方消息通道消息->1", thirdMessage); |
| 803 | thirdMessage.message = this._rCArrayBufferUtil.uint8ArrayToStr(thirdBroadcastReceivePdu.message, 2); | 803 | thirdMessage.message = this._rCArrayBufferUtil.uint8ArrayToStr(thirdBroadcastReceivePdu.message, 2); |
| 804 | loger.log("监听第三方消息通道消息->", thirdMessage); | 804 | loger.log("监听第三方消息通道消息->", thirdMessage); |
| 805 | - this._emit(MessageTypes.RECEIVE_THIRD_MESSGAE,thirdMessage); | 805 | + this._emit(MessageTypes.RECEIVE_THIRD_MESSGAE, thirdMessage); |
| 806 | if (this.thirdMessage) { | 806 | if (this.thirdMessage) { |
| 807 | this.thirdMessage.sendMessageToParent(thirdMessage.message); | 807 | this.thirdMessage.sendMessageToParent(thirdMessage.message); |
| 808 | } | 808 | } |
| @@ -861,12 +861,19 @@ class ConferApe extends Ape { | @@ -861,12 +861,19 @@ class ConferApe extends Ape { | ||
| 861 | //1.判断进入的用户身份,如果进入的人身份是host,助教,监课,并且和自己的身份冲突,自己会被踢掉 | 861 | //1.判断进入的用户身份,如果进入的人身份是host,助教,监课,并且和自己的身份冲突,自己会被踢掉 |
| 862 | //2.最后进入的人会踢掉之前进入的人,nodeId是按时间戳生成的,最后进入的人nodeId的值比之前进入的人大 | 862 | //2.最后进入的人会踢掉之前进入的人,nodeId是按时间戳生成的,最后进入的人nodeId的值比之前进入的人大 |
| 863 | if (parseInt(nodeId) > GlobalConfig.nodeId) { | 863 | if (parseInt(nodeId) > GlobalConfig.nodeId) { |
| 864 | + let newUserInfo = { | ||
| 865 | + userId: nodeData.userId, | ||
| 866 | + userName: nodeData.name, | ||
| 867 | + nodeId: nodeData.nodeId, | ||
| 868 | + userRole: nodeData.userRole, | ||
| 869 | + deviceType: nodeData.deviceType | ||
| 870 | + } | ||
| 864 | if (nodeData.role == ApeConsts.NR_HOST && GlobalConfig.isHost) { | 871 | if (nodeData.role == ApeConsts.NR_HOST && GlobalConfig.isHost) { |
| 865 | - this.kickOutRoster(); | 872 | + this.kickOutRoster(newUserInfo); |
| 866 | return; | 873 | return; |
| 867 | } else if (nodeData.userId == GlobalConfig.userId && GlobalConfig.userId != "0") { | 874 | } else if (nodeData.userId == GlobalConfig.userId && GlobalConfig.userId != "0") { |
| 868 | loger.log("异地登陆->userId->", GlobalConfig.userId); | 875 | loger.log("异地登陆->userId->", GlobalConfig.userId); |
| 869 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_REMOTE_LANDING); | 876 | + this._emit(MessageTypes.MCU_ERROR, {type:MessageTypes.ERR_CLASS_REMOTE_LANDING, data:newUserInfo}); |
| 870 | this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 1}); | 877 | this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 1}); |
| 871 | } | 878 | } |
| 872 | } | 879 | } |
| @@ -912,26 +919,33 @@ class ConferApe extends Ape { | @@ -912,26 +919,33 @@ class ConferApe extends Ape { | ||
| 912 | loger.log("NR_INVISIBLE"); | 919 | loger.log("NR_INVISIBLE"); |
| 913 | return; | 920 | return; |
| 914 | } | 921 | } |
| 915 | - if (!rosterExists){ | ||
| 916 | - this.rosterLen=Object.keys(this.rosters).length; | 922 | + if (!rosterExists) { |
| 923 | + this.rosterLen = Object.keys(this.rosters).length; | ||
| 917 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 | 924 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 |
| 918 | - newNodeData.rosterLen=this.rosterLen; | 925 | + newNodeData.rosterLen = this.rosterLen; |
| 919 | loger.log("人员加入->", newNodeData); | 926 | loger.log("人员加入->", newNodeData); |
| 920 | this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); | 927 | this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); |
| 921 | this.emitRosterChange(); | 928 | this.emitRosterChange(); |
| 922 | } else { | 929 | } else { |
| 923 | //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists); | 930 | //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists); |
| 924 | - this.rosterLen=Object.keys(this.rosters).length; | 931 | + this.rosterLen = Object.keys(this.rosters).length; |
| 925 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 | 932 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 |
| 926 | - newNodeData.rosterLen=this.rosterLen; | 933 | + newNodeData.rosterLen = this.rosterLen; |
| 927 | loger.log("人员更新信息->", newNodeData); | 934 | loger.log("人员更新信息->", newNodeData); |
| 928 | this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); | 935 | this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); |
| 929 | } | 936 | } |
| 930 | } | 937 | } |
| 931 | 938 | ||
| 932 | - //踢出用户 | ||
| 933 | - kickOutRoster() { | ||
| 934 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_KICK_OUT); | 939 | + //踢出用户(_param是新进入的人的信息) |
| 940 | + kickOutRoster(_newUserInfo) { | ||
| 941 | + /* { | ||
| 942 | + userId: nodeData.userId, | ||
| 943 | + userName: nodeData.name, | ||
| 944 | + nodeId:nodeData.nodeId, | ||
| 945 | + userRole:nodeData.userRole, | ||
| 946 | + deviceType: nodeData.deviceType | ||
| 947 | + }*/ | ||
| 948 | + this._emit(MessageTypes.MCU_ERROR, {type:MessageTypes.ERR_CLASS_KICK_OUT,data: _newUserInfo}); | ||
| 935 | this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 1}); | 949 | this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 1}); |
| 936 | } | 950 | } |
| 937 | 951 | ||
| @@ -990,11 +1004,11 @@ class ConferApe extends Ape { | @@ -990,11 +1004,11 @@ class ConferApe extends Ape { | ||
| 990 | loger.log(nodeId, "->离开课堂->身份->", user.role); | 1004 | loger.log(nodeId, "->离开课堂->身份->", user.role); |
| 991 | } | 1005 | } |
| 992 | delete this.rosters[nodeId]; | 1006 | delete this.rosters[nodeId]; |
| 993 | - this.rosterLen=Object.keys(this.rosters).length; | 1007 | + this.rosterLen = Object.keys(this.rosters).length; |
| 994 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 | 1008 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 |
| 995 | 1009 | ||
| 996 | this.emitRosterChange(); | 1010 | this.emitRosterChange(); |
| 997 | - this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId,"rosterLen":this.rosterLen}); | 1011 | + this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId, "rosterLen": this.rosterLen}); |
| 998 | 1012 | ||
| 999 | //当前人员列表中抽一个人来检查离开人员是否占用频道 | 1013 | //当前人员列表中抽一个人来检查离开人员是否占用频道 |
| 1000 | for (let key in this.rosters) { | 1014 | for (let key in this.rosters) { |
| @@ -1002,7 +1016,7 @@ class ConferApe extends Ape { | @@ -1002,7 +1016,7 @@ class ConferApe extends Ape { | ||
| 1002 | //如果抽到的人是自己就处理以下操作 | 1016 | //如果抽到的人是自己就处理以下操作 |
| 1003 | if (randNodeId == GlobalConfig.nodeId) { | 1017 | if (randNodeId == GlobalConfig.nodeId) { |
| 1004 | loger.log(randNodeId, "有权限检查离开的人员是否占用channel"); | 1018 | loger.log(randNodeId, "有权限检查离开的人员是否占用channel"); |
| 1005 | - this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId,"rosterLen":this.rosterLen}); | 1019 | + this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId, "rosterLen": this.rosterLen}); |
| 1006 | //如果离开的人员是老师,需要暂停当前的课堂 | 1020 | //如果离开的人员是老师,需要暂停当前的课堂 |
| 1007 | 1021 | ||
| 1008 | if (user && user.role == ApeConsts.NR_HOST) { | 1022 | if (user && user.role == ApeConsts.NR_HOST) { |
-
请 注册 或 登录 后发表评论