1.修改nodeId和userId的生成规则,避免重复;2.统一设备类型定义;3.处理课堂模块和视频模块离开课堂后的消息处理
正在显示
9 个修改的文件
包含
130 行增加
和
68 行删除
| @@ -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.30.5.20171117"; | 66 | + GlobalConfig.sdkVersion = "v2.31.1.20171120"; |
| 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 | //设置 |
| @@ -456,8 +456,23 @@ export default class MessageEntrance extends Emiter { | @@ -456,8 +456,23 @@ export default class MessageEntrance extends Emiter { | ||
| 456 | LogManager.IS_OPEN_SEND_LOG = false;//断开之后不再上报日志 | 456 | LogManager.IS_OPEN_SEND_LOG = false;//断开之后不再上报日志 |
| 457 | },2000); | 457 | },2000); |
| 458 | 458 | ||
| 459 | + this.clearClientData(); | ||
| 460 | + } | ||
| 461 | + //清除所有客户端数据 | ||
| 462 | + clearClientData(){ | ||
| 463 | + GlobalConfig.MCUServerIP=""; | ||
| 464 | + GlobalConfig.MCUServerPort=""; | ||
| 465 | + GlobalConfig.mcuListFinal=[]; | ||
| 466 | + if(_mcu){ | ||
| 467 | + _mcu.leaveMCU(); | ||
| 468 | + } | ||
| 469 | + if(_confer_ape){ | ||
| 470 | + _confer_ape.stopApe(); | ||
| 471 | + } | ||
| 472 | + if(_video_ape){ | ||
| 473 | + _video_ape.stopApe(); | ||
| 474 | + } | ||
| 459 | } | 475 | } |
| 460 | - | ||
| 461 | //当前的课堂状态信息发生改变,需要保存课堂状态到Sass | 476 | //当前的课堂状态信息发生改变,需要保存课堂状态到Sass |
| 462 | _onClassStatusInfoChange(_param) { | 477 | _onClassStatusInfoChange(_param) { |
| 463 | //如果MCU连接已经断开,不发送 | 478 | //如果MCU连接已经断开,不发送 |
| @@ -493,6 +508,10 @@ export default class MessageEntrance extends Emiter { | @@ -493,6 +508,10 @@ export default class MessageEntrance extends Emiter { | ||
| 493 | if (GlobalConfig.isRecordPlayBack || !_confer_ape) { | 508 | if (GlobalConfig.isRecordPlayBack || !_confer_ape) { |
| 494 | return; | 509 | return; |
| 495 | } | 510 | } |
| 511 | + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_ZHIBO){ | ||
| 512 | + //直播的时候不再同步所有模块的消息 | ||
| 513 | + return | ||
| 514 | + } | ||
| 496 | //老师身份和非录制回放的时候执行,录制状态发送改变,需要更新当前的数据,否则已有的消息会录制不上 | 515 | //老师身份和非录制回放的时候执行,录制状态发送改变,需要更新当前的数据,否则已有的消息会录制不上 |
| 497 | if (_confer_ape.checkHasRecordControl()) { | 516 | if (_confer_ape.checkHasRecordControl()) { |
| 498 | loger.warn('录制状态发送改变->更新所有模块的当前数据发送到MCU'); | 517 | loger.warn('录制状态发送改变->更新所有模块的当前数据发送到MCU'); |
| @@ -529,7 +548,10 @@ export default class MessageEntrance extends Emiter { | @@ -529,7 +548,10 @@ export default class MessageEntrance extends Emiter { | ||
| 529 | if (!_data) { | 548 | if (!_data) { |
| 530 | return; | 549 | return; |
| 531 | } | 550 | } |
| 532 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2 || GlobalConfig.deviceType == 3 || _data.nodeId == GlobalConfig.nodeId) { | 551 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || |
| 552 | + GlobalConfig.deviceType == GlobalConfig.deviceAndroid || | ||
| 553 | + GlobalConfig.deviceType == GlobalConfig.deviceH5 || | ||
| 554 | + _data.nodeId == GlobalConfig.nodeId) { | ||
| 533 | return; | 555 | return; |
| 534 | } | 556 | } |
| 535 | if (_webRtc) { | 557 | if (_webRtc) { |
| @@ -600,7 +622,7 @@ export default class MessageEntrance extends Emiter { | @@ -600,7 +622,7 @@ export default class MessageEntrance extends Emiter { | ||
| 600 | GlobalConfig.isH5 = _param.isH5 || false;//外部传入的参数,是否是H5 | 622 | GlobalConfig.isH5 = _param.isH5 || false;//外部传入的参数,是否是H5 |
| 601 | if (GlobalConfig.isH5 == true) { | 623 | if (GlobalConfig.isH5 == true) { |
| 602 | GlobalConfig.platform = "h5"; | 624 | GlobalConfig.platform = "h5"; |
| 603 | - GlobalConfig.deviceType = 3//3是H5 | 625 | + GlobalConfig.deviceType = GlobalConfig.deviceH5; |
| 604 | loger.warn("设备类型是H5"); | 626 | loger.warn("设备类型是H5"); |
| 605 | } | 627 | } |
| 606 | 628 | ||
| @@ -619,25 +641,27 @@ export default class MessageEntrance extends Emiter { | @@ -619,25 +641,27 @@ export default class MessageEntrance extends Emiter { | ||
| 619 | GlobalConfig.userRole != ApeConsts.invisible) { | 641 | GlobalConfig.userRole != ApeConsts.invisible) { |
| 620 | GlobalConfig.userRole = ApeConsts.normal; | 642 | GlobalConfig.userRole = ApeConsts.normal; |
| 621 | } | 643 | } |
| 622 | - //如果没有名字或没有userId的时候,需要随机生成 | ||
| 623 | - let timestampStr = new Date().getTime().toString(); | ||
| 624 | - timestampStr = timestampStr.substr(timestampStr.length - 4); | 644 | + |
| 645 | + | ||
| 646 | + //如果没有名字的时候需要随机生成 | ||
| 647 | + let randUserId =parseInt(Math.random()*1000)+""+parseInt(Math.random()*1000)+""+parseInt(Math.random()*1000); | ||
| 625 | if (GlobalConfig.userRole == ApeConsts.host) { | 648 | if (GlobalConfig.userRole == ApeConsts.host) { |
| 626 | - timestampStr = "T" + timestampStr; | 649 | + randUserId = "T" + randUserId; |
| 627 | } else if (GlobalConfig.userRole == ApeConsts.assistant) { | 650 | } else if (GlobalConfig.userRole == ApeConsts.assistant) { |
| 628 | - timestampStr = "A" + timestampStr; | 651 | + randUserId = "A" + randUserId; |
| 629 | } else if (GlobalConfig.userRole == ApeConsts.presenter) { | 652 | } else if (GlobalConfig.userRole == ApeConsts.presenter) { |
| 630 | - timestampStr = "P" + timestampStr; | 653 | + randUserId = "P" + randUserId; |
| 631 | } else { | 654 | } else { |
| 632 | - timestampStr = "S" + timestampStr; | 655 | + randUserId = "S" + randUserId; |
| 633 | } | 656 | } |
| 657 | + | ||
| 634 | //如果没有名字,随机起一个名字 | 658 | //如果没有名字,随机起一个名字 |
| 635 | - GlobalConfig.userName = _param.userName || timestampStr; | 659 | + GlobalConfig.userName = _param.userName || randUserId; |
| 636 | //如果没有userId或者为"0",随机生成 | 660 | //如果没有userId或者为"0",随机生成 |
| 637 | if (!GlobalConfig.userId || GlobalConfig.userId == "0") { | 661 | if (!GlobalConfig.userId || GlobalConfig.userId == "0") { |
| 638 | - GlobalConfig.userId = timestampStr; | 662 | + GlobalConfig.userId = randUserId; |
| 639 | } | 663 | } |
| 640 | - | 664 | + console.log("userId", GlobalConfig.userId); |
| 641 | //客户端决定是否延迟接收消息 | 665 | //客户端决定是否延迟接收消息 |
| 642 | GlobalConfig.messageDelay = _param.messageDelay || false; | 666 | GlobalConfig.messageDelay = _param.messageDelay || false; |
| 643 | 667 | ||
| @@ -696,7 +720,7 @@ export default class MessageEntrance extends Emiter { | @@ -696,7 +720,7 @@ export default class MessageEntrance extends Emiter { | ||
| 696 | GlobalConfig.md5 = _data.md5 || ""; //这个暂时用假数据,后台接口写完就有数据了 | 720 | GlobalConfig.md5 = _data.md5 || ""; //这个暂时用假数据,后台接口写完就有数据了 |
| 697 | GlobalConfig.msType = _data.msType || 1; | 721 | GlobalConfig.msType = _data.msType || 1; |
| 698 | GlobalConfig.siteId = _data.siteId || ""; | 722 | GlobalConfig.siteId = _data.siteId || ""; |
| 699 | - GlobalConfig.classType = _data.meetingType || ApeConsts.CLASS_TYPE_1; | 723 | + GlobalConfig.classType = _data.meetingType || ApeConsts.CLASS_TYPE_1v1; |
| 700 | 724 | ||
| 701 | //host默认需要密码,Sass服务器只判断学生是否需要密码,没有判断老师的 | 725 | //host默认需要密码,Sass服务器只判断学生是否需要密码,没有判断老师的 |
| 702 | GlobalConfig.passwordRequired = _data.passwordRequired || false; //md5验证的时候需要Sass返回的值,不能更改 | 726 | GlobalConfig.passwordRequired = _data.passwordRequired || false; //md5验证的时候需要Sass返回的值,不能更改 |
| @@ -1211,7 +1235,7 @@ export default class MessageEntrance extends Emiter { | @@ -1211,7 +1235,7 @@ export default class MessageEntrance extends Emiter { | ||
| 1211 | joinClassSuccessCallBackData.userRole = GlobalConfig.userRole; | 1235 | joinClassSuccessCallBackData.userRole = GlobalConfig.userRole; |
| 1212 | joinClassSuccessCallBackData.userId = GlobalConfig.userId; | 1236 | joinClassSuccessCallBackData.userId = GlobalConfig.userId; |
| 1213 | joinClassSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired; | 1237 | joinClassSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired; |
| 1214 | - joinClassSuccessCallBackData.classType = GlobalConfig.classType || ApeConsts.CLASS_TYPE_1; | 1238 | + joinClassSuccessCallBackData.classType = GlobalConfig.classType || ApeConsts.CLASS_TYPE_1v1; |
| 1215 | 1239 | ||
| 1216 | joinClassSuccessCallBackData.country = GlobalConfig.country; //国家 | 1240 | joinClassSuccessCallBackData.country = GlobalConfig.country; //国家 |
| 1217 | joinClassSuccessCallBackData.city = GlobalConfig.city; //城市 | 1241 | joinClassSuccessCallBackData.city = GlobalConfig.city; //城市 |
| @@ -1360,12 +1384,12 @@ export default class MessageEntrance extends Emiter { | @@ -1360,12 +1384,12 @@ export default class MessageEntrance extends Emiter { | ||
| 1360 | //用更状态数据发送变更 | 1384 | //用更状态数据发送变更 |
| 1361 | _onRosterUpdateHandler(_data) { | 1385 | _onRosterUpdateHandler(_data) { |
| 1362 | //数据无效/ios/android 不处理数据 | 1386 | //数据无效/ios/android 不处理数据 |
| 1363 | - if (!_data || GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 1387 | + if (!_data || GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 1364 | return; | 1388 | return; |
| 1365 | } | 1389 | } |
| 1366 | let nodeData = _data.nodeData; | 1390 | let nodeData = _data.nodeData; |
| 1367 | //数据用户是pc或H5不处理 | 1391 | //数据用户是pc或H5不处理 |
| 1368 | - if (!nodeData || nodeData.deviceType == 0 || nodeData.deviceType == 3) { | 1392 | + if (!nodeData || nodeData.deviceType == GlobalConfig.devicePC || nodeData.deviceType == GlobalConfig.deviceH5) { |
| 1369 | return; | 1393 | return; |
| 1370 | } | 1394 | } |
| 1371 | if (nodeData.openCamera > 0 && _webRtc) { | 1395 | if (nodeData.openCamera > 0 && _webRtc) { |
| @@ -1572,7 +1596,6 @@ export default class MessageEntrance extends Emiter { | @@ -1572,7 +1596,6 @@ export default class MessageEntrance extends Emiter { | ||
| 1572 | //开始上课 | 1596 | //开始上课 |
| 1573 | _confer_ape.startClass(_param); | 1597 | _confer_ape.startClass(_param); |
| 1574 | ////开始录制 | 1598 | ////开始录制 |
| 1575 | - //_confer_ape.startRecord(); | ||
| 1576 | } | 1599 | } |
| 1577 | } | 1600 | } |
| 1578 | 1601 | ||
| @@ -2564,8 +2587,8 @@ export default class MessageEntrance extends Emiter { | @@ -2564,8 +2587,8 @@ export default class MessageEntrance extends Emiter { | ||
| 2564 | 2587 | ||
| 2565 | //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 | 2588 | //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 |
| 2566 | if (GlobalConfig.docListPrepare && GlobalConfig.docListPrepare.length > 0) { | 2589 | if (GlobalConfig.docListPrepare && GlobalConfig.docListPrepare.length > 0) { |
| 2567 | - //如果当前身份是老师或者当前课堂内只有一个人,有权限同步文档到MCU | ||
| 2568 | - if (GlobalConfig.isHost || GlobalConfig.rosterNumber <= 1&&GlobalConfig.deviceType!=3) { | 2590 | + //如果当前身份是老师或者当前课堂内只有一个人并且不是H5,有权限同步文档到MCU |
| 2591 | + if (GlobalConfig.isHost || (GlobalConfig.rosterNumber <= 1&&GlobalConfig.deviceType!=GlobalConfig.deviceH5)) { | ||
| 2569 | for (let i = 0; i < GlobalConfig.docListPrepare.length; i++) { | 2592 | for (let i = 0; i < GlobalConfig.docListPrepare.length; i++) { |
| 2570 | let value = GlobalConfig.docListPrepare[i]; | 2593 | let value = GlobalConfig.docListPrepare[i]; |
| 2571 | if (value) { | 2594 | if (value) { |
| @@ -2759,7 +2782,7 @@ export default class MessageEntrance extends Emiter { | @@ -2759,7 +2782,7 @@ export default class MessageEntrance extends Emiter { | ||
| 2759 | //loger.log("伴音MUSIC模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.musicListPrepare.length); | 2782 | //loger.log("伴音MUSIC模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.musicListPrepare.length); |
| 2760 | //console.log("伴音MUSIC模块共享模数据->", GlobalConfig.musicListPrepare); | 2783 | //console.log("伴音MUSIC模块共享模数据->", GlobalConfig.musicListPrepare); |
| 2761 | //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 | 2784 | //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 |
| 2762 | - if (GlobalConfig.isHost && GlobalConfig.musicListPrepare.length > 0&&GlobalConfig.deviceType!=3) { | 2785 | + if (GlobalConfig.isHost && GlobalConfig.musicListPrepare.length > 0&&GlobalConfig.deviceType!=GlobalConfig.deviceH5) { |
| 2763 | for (let i = 0; i < GlobalConfig.musicListPrepare.length; i++) { | 2786 | for (let i = 0; i < GlobalConfig.musicListPrepare.length; i++) { |
| 2764 | let value = GlobalConfig.musicListPrepare[i]; | 2787 | let value = GlobalConfig.musicListPrepare[i]; |
| 2765 | if (value) { | 2788 | if (value) { |
| @@ -2790,7 +2813,7 @@ export default class MessageEntrance extends Emiter { | @@ -2790,7 +2813,7 @@ export default class MessageEntrance extends Emiter { | ||
| 2790 | //loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length); | 2813 | //loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length); |
| 2791 | //console.log("媒体共享模数据->", GlobalConfig.sharedMediaList); | 2814 | //console.log("媒体共享模数据->", GlobalConfig.sharedMediaList); |
| 2792 | //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 | 2815 | //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 |
| 2793 | - if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0&&GlobalConfig.deviceType!=3) { | 2816 | + if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0&&GlobalConfig.deviceType!=GlobalConfig.deviceH5) { |
| 2794 | for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) { | 2817 | for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) { |
| 2795 | let value = GlobalConfig.sharedMediaList[i]; | 2818 | let value = GlobalConfig.sharedMediaList[i]; |
| 2796 | if (value) { | 2819 | if (value) { |
| @@ -2943,7 +2966,7 @@ export default class MessageEntrance extends Emiter { | @@ -2943,7 +2966,7 @@ export default class MessageEntrance extends Emiter { | ||
| 2943 | joinClassSuccessCallBackData.userRole = GlobalConfig.userRole; | 2966 | joinClassSuccessCallBackData.userRole = GlobalConfig.userRole; |
| 2944 | joinClassSuccessCallBackData.userId = GlobalConfig.userId; | 2967 | joinClassSuccessCallBackData.userId = GlobalConfig.userId; |
| 2945 | joinClassSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired; | 2968 | joinClassSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired; |
| 2946 | - joinClassSuccessCallBackData.classType = GlobalConfig.classType || ApeConsts.CLASS_TYPE_1; | 2969 | + joinClassSuccessCallBackData.classType = GlobalConfig.classType || ApeConsts.CLASS_TYPE_1v1; |
| 2947 | 2970 | ||
| 2948 | joinClassSuccessCallBackData.country = GlobalConfig.country; //国家 | 2971 | joinClassSuccessCallBackData.country = GlobalConfig.country; //国家 |
| 2949 | joinClassSuccessCallBackData.city = GlobalConfig.city; //城市 | 2972 | joinClassSuccessCallBackData.city = GlobalConfig.city; //城市 |
| @@ -3029,7 +3052,7 @@ export default class MessageEntrance extends Emiter { | @@ -3029,7 +3052,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3029 | * 初始化webRtc | 3052 | * 初始化webRtc |
| 3030 | * */ | 3053 | * */ |
| 3031 | _initWebRtcSdk(_params, _callback) { | 3054 | _initWebRtcSdk(_params, _callback) { |
| 3032 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2 || GlobalConfig.deviceType == 3) { | 3055 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid || GlobalConfig.deviceType == GlobalConfig.deviceH5) { |
| 3033 | loger.warn("移动端不需要处理初始化webRtc"); | 3056 | loger.warn("移动端不需要处理初始化webRtc"); |
| 3034 | if (_callback) { | 3057 | if (_callback) { |
| 3035 | _callback(); | 3058 | _callback(); |
| @@ -3104,7 +3127,7 @@ export default class MessageEntrance extends Emiter { | @@ -3104,7 +3127,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3104 | * 加入视频通话 | 3127 | * 加入视频通话 |
| 3105 | * */ | 3128 | * */ |
| 3106 | _joinChannel(_params) { | 3129 | _joinChannel(_params) { |
| 3107 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3130 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3108 | loger.warn("移动端不需要处理加入视频房间"); | 3131 | loger.warn("移动端不需要处理加入视频房间"); |
| 3109 | return; | 3132 | return; |
| 3110 | } | 3133 | } |
| @@ -3117,7 +3140,7 @@ export default class MessageEntrance extends Emiter { | @@ -3117,7 +3140,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3117 | * 离开视频通话频道 | 3140 | * 离开视频通话频道 |
| 3118 | * */ | 3141 | * */ |
| 3119 | _leaveChannel(_params) { | 3142 | _leaveChannel(_params) { |
| 3120 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3143 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3121 | return; | 3144 | return; |
| 3122 | } | 3145 | } |
| 3123 | if (_webRtc) { | 3146 | if (_webRtc) { |
| @@ -3139,7 +3162,7 @@ export default class MessageEntrance extends Emiter { | @@ -3139,7 +3162,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3139 | return; | 3162 | return; |
| 3140 | } | 3163 | } |
| 3141 | //ios和安卓的只需要更新数据即可 | 3164 | //ios和安卓的只需要更新数据即可 |
| 3142 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3165 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3143 | loger.log("调用webRtc推流"); | 3166 | loger.log("调用webRtc推流"); |
| 3144 | GlobalConfig.openCamera = EngineUtils.creatTimestamp(); | 3167 | GlobalConfig.openCamera = EngineUtils.creatTimestamp(); |
| 3145 | GlobalConfig.openMicrophones = GlobalConfig.openCamera; | 3168 | GlobalConfig.openMicrophones = GlobalConfig.openCamera; |
| @@ -3167,7 +3190,7 @@ export default class MessageEntrance extends Emiter { | @@ -3167,7 +3190,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3167 | * */ | 3190 | * */ |
| 3168 | _unpublishMedia(_params) { | 3191 | _unpublishMedia(_params) { |
| 3169 | //ios和安卓的只需要更新数据即可 | 3192 | //ios和安卓的只需要更新数据即可 |
| 3170 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3193 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3171 | loger.log("调用webRtc停止推流"); | 3194 | loger.log("调用webRtc停止推流"); |
| 3172 | GlobalConfig.openCamera = 0; | 3195 | GlobalConfig.openCamera = 0; |
| 3173 | GlobalConfig.openMicrophones = 0; | 3196 | GlobalConfig.openMicrophones = 0; |
| @@ -3193,7 +3216,7 @@ export default class MessageEntrance extends Emiter { | @@ -3193,7 +3216,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3193 | * 切换摄像头和麦克风设备 | 3216 | * 切换摄像头和麦克风设备 |
| 3194 | * */ | 3217 | * */ |
| 3195 | _changeDevices(_params) { | 3218 | _changeDevices(_params) { |
| 3196 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3219 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3197 | return; | 3220 | return; |
| 3198 | } | 3221 | } |
| 3199 | if (_webRtc) { | 3222 | if (_webRtc) { |
| @@ -3205,7 +3228,7 @@ export default class MessageEntrance extends Emiter { | @@ -3205,7 +3228,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3205 | * 设置旁路推流 | 3228 | * 设置旁路推流 |
| 3206 | * */ | 3229 | * */ |
| 3207 | _setConfigPublisher(_params) { | 3230 | _setConfigPublisher(_params) { |
| 3208 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3231 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3209 | return; | 3232 | return; |
| 3210 | } | 3233 | } |
| 3211 | if (_webRtc) { | 3234 | if (_webRtc) { |
| @@ -3217,7 +3240,7 @@ export default class MessageEntrance extends Emiter { | @@ -3217,7 +3240,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3217 | * 设置本地video视图 | 3240 | * 设置本地video视图 |
| 3218 | * */ | 3241 | * */ |
| 3219 | _setLocalMediaView(_params) { | 3242 | _setLocalMediaView(_params) { |
| 3220 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3243 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3221 | return; | 3244 | return; |
| 3222 | } | 3245 | } |
| 3223 | if (_webRtc) { | 3246 | if (_webRtc) { |
| @@ -3229,7 +3252,7 @@ export default class MessageEntrance extends Emiter { | @@ -3229,7 +3252,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3229 | * 设置房间内老师身份的视图 | 3252 | * 设置房间内老师身份的视图 |
| 3230 | * */ | 3253 | * */ |
| 3231 | _setHostRemoteMediaView(_params) { | 3254 | _setHostRemoteMediaView(_params) { |
| 3232 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3255 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3233 | return; | 3256 | return; |
| 3234 | } | 3257 | } |
| 3235 | if (_webRtc) { | 3258 | if (_webRtc) { |
| @@ -3241,7 +3264,7 @@ export default class MessageEntrance extends Emiter { | @@ -3241,7 +3264,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3241 | * 设置房间内普通身份的视图 | 3264 | * 设置房间内普通身份的视图 |
| 3242 | * */ | 3265 | * */ |
| 3243 | _setNormalRemoteMediaView(_params) { | 3266 | _setNormalRemoteMediaView(_params) { |
| 3244 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3267 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3245 | return; | 3268 | return; |
| 3246 | } | 3269 | } |
| 3247 | if (_webRtc) { | 3270 | if (_webRtc) { |
| @@ -3257,7 +3280,7 @@ export default class MessageEntrance extends Emiter { | @@ -3257,7 +3280,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3257 | if (!_params) { | 3280 | if (!_params) { |
| 3258 | return; | 3281 | return; |
| 3259 | } | 3282 | } |
| 3260 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3283 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3261 | return; | 3284 | return; |
| 3262 | } | 3285 | } |
| 3263 | if (_webRtc) { | 3286 | if (_webRtc) { |
| @@ -3283,7 +3306,7 @@ export default class MessageEntrance extends Emiter { | @@ -3283,7 +3306,7 @@ export default class MessageEntrance extends Emiter { | ||
| 3283 | * 设置监课和需要隐藏显示的用户视图 | 3306 | * 设置监课和需要隐藏显示的用户视图 |
| 3284 | * */ | 3307 | * */ |
| 3285 | _setInvisibleMediaView(_params) { | 3308 | _setInvisibleMediaView(_params) { |
| 3286 | - if (GlobalConfig.deviceType == 1 || GlobalConfig.deviceType == 2) { | 3309 | + if (GlobalConfig.deviceType == GlobalConfig.deviceIOS || GlobalConfig.deviceType == GlobalConfig.deviceAndroid) { |
| 3287 | return; | 3310 | return; |
| 3288 | } | 3311 | } |
| 3289 | if (_webRtc) { | 3312 | if (_webRtc) { |
| @@ -15,18 +15,20 @@ | @@ -15,18 +15,20 @@ | ||
| 15 | import Emiter from 'Emiter'; | 15 | import Emiter from 'Emiter'; |
| 16 | import Loger from 'Loger'; | 16 | import Loger from 'Loger'; |
| 17 | import GlobalConfig from 'GlobalConfig'; | 17 | import GlobalConfig from 'GlobalConfig'; |
| 18 | +import EngineUtils from 'EngineUtils'; | ||
| 18 | import LogManager from 'LogManager'; | 19 | import LogManager from 'LogManager'; |
| 19 | let loger = Loger.getLoger('EverSocket'); | 20 | let loger = Loger.getLoger('EverSocket'); |
| 20 | const MCU_MAX_RECONNECTION = 3;//最多重连次数 | 21 | const MCU_MAX_RECONNECTION = 3;//最多重连次数 |
| 21 | class EverSocket extends Emiter { | 22 | class EverSocket extends Emiter { |
| 22 | constructor() { | 23 | constructor() { |
| 23 | super(); | 24 | super(); |
| 25 | + this.sendToMcuList=[];//发送到MCU的数据记录 | ||
| 26 | + this.receiveFromMcuList=[];//接到MCU的数据记录 | ||
| 24 | this.mcuReconnectCounter=0;//(重要)记录mcu连续重连的次数,最大连续8次就不再重连 | 27 | this.mcuReconnectCounter=0;//(重要)记录mcu连续重连的次数,最大连续8次就不再重连 |
| 25 | this._connected = false; | 28 | this._connected = false; |
| 26 | this._lastActiveTime = 0;//最后一次收到消息的时间 | 29 | this._lastActiveTime = 0;//最后一次收到消息的时间 |
| 27 | this._enableEverSocket = false; | 30 | this._enableEverSocket = false; |
| 28 | this.reConnectionCounter = 0;//重连次数 | 31 | this.reConnectionCounter = 0;//重连次数 |
| 29 | - | ||
| 30 | } | 32 | } |
| 31 | 33 | ||
| 32 | begin(ip, port) { | 34 | begin(ip, port) { |
| @@ -68,17 +70,25 @@ class EverSocket extends Emiter { | @@ -68,17 +70,25 @@ class EverSocket extends Emiter { | ||
| 68 | return this._connected; | 70 | return this._connected; |
| 69 | } | 71 | } |
| 70 | 72 | ||
| 71 | - send(data) { | 73 | + send(data,type) { |
| 72 | if (this._connected) { | 74 | if (this._connected) { |
| 73 | if (data) { | 75 | if (data) { |
| 74 | let len=data.byteLength; | 76 | let len=data.byteLength; |
| 77 | + //超过1024 警告提示 | ||
| 75 | if (len> 1024) { | 78 | if (len> 1024) { |
| 76 | - loger.warn('发送到MCU的数据文件超过1k-->byteLength->', len); | 79 | + loger.warn('发送到MCU的数据文件超过1k-->byteLength->'+len,"type:"+type); |
| 77 | } | 80 | } |
| 81 | + //大于10k 不发送 | ||
| 78 | if (len>=1024*10) { | 82 | if (len>=1024*10) { |
| 79 | - loger.warn('发送到MCU的数据文件超过10k-->byteLength->', len); | 83 | + loger.warn('发送到MCU的数据文件超过10k-->byteLength->'+len,"type:"+type); |
| 80 | return; | 84 | return; |
| 81 | } | 85 | } |
| 86 | + | ||
| 87 | + this.sendToMcuList.push("c2s_"+EngineUtils.creatTimestampStr()+"_"+len+"_"+type); | ||
| 88 | + if(this.sendToMcuList.length>80){ | ||
| 89 | + loger.log("发送到MCU数据统计->",this.sendToMcuList); | ||
| 90 | + this.sendToMcuList=[]; | ||
| 91 | + } | ||
| 82 | } | 92 | } |
| 83 | this.websocket.send(data); | 93 | this.websocket.send(data); |
| 84 | } else { | 94 | } else { |
| @@ -206,8 +216,14 @@ class EverSocket extends Emiter { | @@ -206,8 +216,14 @@ class EverSocket extends Emiter { | ||
| 206 | _onMessage(messageEvent) { | 216 | _onMessage(messageEvent) { |
| 207 | this._lastActiveTime = Date.now(); | 217 | this._lastActiveTime = Date.now(); |
| 208 | const bufferData = messageEvent.data; | 218 | const bufferData = messageEvent.data; |
| 209 | - //loger.log('RECEIVE MESSAGE-->byteLength->',bufferData.byteLength); | ||
| 210 | - if (bufferData.byteLength > 0) { | 219 | + //loger.log('RECEIVE-->byteLength->',bufferData.byteLength); |
| 220 | + let len=bufferData.byteLength; | ||
| 221 | + this.receiveFromMcuList.push("s2c_"+EngineUtils.creatTimestampStr()+"_"+len); | ||
| 222 | + if(this.receiveFromMcuList.length>80){ | ||
| 223 | + loger.log("收到MCU数据统计->",this.receiveFromMcuList); | ||
| 224 | + this.receiveFromMcuList=[]; | ||
| 225 | + } | ||
| 226 | + if (len> 0) { | ||
| 211 | this._emit(EverSocket.MESSAGE, bufferData); | 227 | this._emit(EverSocket.MESSAGE, bufferData); |
| 212 | } | 228 | } |
| 213 | } | 229 | } |
| @@ -542,7 +542,13 @@ GlobalConfig.hasCamera = false; //摄像头是否可用 | @@ -542,7 +542,13 @@ GlobalConfig.hasCamera = false; //摄像头是否可用 | ||
| 542 | GlobalConfig.hasMicrophone = false; //麦克风是否可用 | 542 | GlobalConfig.hasMicrophone = false; //麦克风是否可用 |
| 543 | 543 | ||
| 544 | GlobalConfig.returnCitySN = null;//获取的ip数据 {"cip":"60.253.214.122","cid":"110000","cname":"北京市"} | 544 | GlobalConfig.returnCitySN = null;//获取的ip数据 {"cip":"60.253.214.122","cid":"110000","cname":"北京市"} |
| 545 | -GlobalConfig.deviceType = 0; //设备类型 0:电脑 1:ios 2:安卓 | 545 | +//设备类型 0:电脑 1:ios 2:安卓 3 h5 |
| 546 | +GlobalConfig.deviceType = 0; | ||
| 547 | +GlobalConfig.devicePC=0; | ||
| 548 | +GlobalConfig.deviceIOS=1; | ||
| 549 | +GlobalConfig.deviceAndroid=2; | ||
| 550 | +GlobalConfig.deviceH5=3; | ||
| 551 | + | ||
| 546 | GlobalConfig.userIp = ""; //用户当前IP | 552 | GlobalConfig.userIp = ""; //用户当前IP |
| 547 | GlobalConfig.userId = 0; | 553 | GlobalConfig.userId = 0; |
| 548 | GlobalConfig.paramUserId=0; | 554 | GlobalConfig.paramUserId=0; |
| @@ -588,7 +594,7 @@ GlobalConfig.topNodeID = 101; //现在固定值,还不知道是做什么用 | @@ -588,7 +594,7 @@ GlobalConfig.topNodeID = 101; //现在固定值,还不知道是做什么用 | ||
| 588 | GlobalConfig.siteId = ""; //站点号 | 594 | GlobalConfig.siteId = ""; //站点号 |
| 589 | GlobalConfig.className = ""; // 课程名称 | 595 | GlobalConfig.className = ""; // 课程名称 |
| 590 | GlobalConfig.classId = 0; //课堂号=classId=meetingNumber 之后统一修改为classId | 596 | GlobalConfig.classId = 0; //课堂号=classId=meetingNumber 之后统一修改为classId |
| 591 | -GlobalConfig.classType = ApeConsts.CLASS_TYPE_1; //课堂类型 | 597 | +GlobalConfig.classType = ApeConsts.CLASS_TYPE_1v1; //课堂类型 |
| 592 | GlobalConfig.classStatus = ApeConsts.CLASS_STATUS_WAIT; // 0;//课堂还未开始 1;//直播中 2 //课间休息 3已经停止 | 598 | GlobalConfig.classStatus = ApeConsts.CLASS_STATUS_WAIT; // 0;//课堂还未开始 1;//直播中 2 //课间休息 3已经停止 |
| 593 | GlobalConfig.classStartTime = ""; //课堂点击开始时间 | 599 | GlobalConfig.classStartTime = ""; //课堂点击开始时间 |
| 594 | GlobalConfig.classStopTime = ""; //最后一次停止的时间(点暂停或结束),每次发送数据都获取当前时间戳 | 600 | GlobalConfig.classStopTime = ""; //最后一次停止的时间(点暂停或结束),每次发送数据都获取当前时间戳 |
| @@ -29,9 +29,9 @@ ApeConsts.STOP_ALL_PUBLISH=5; //所有人停止推流 | @@ -29,9 +29,9 @@ ApeConsts.STOP_ALL_PUBLISH=5; //所有人停止推流 | ||
| 29 | ApeConsts.CLASS_ACTION_DRAW_STATUS_CHANGE = 6; //更改用户的画笔状态 | 29 | ApeConsts.CLASS_ACTION_DRAW_STATUS_CHANGE = 6; //更改用户的画笔状态 |
| 30 | 30 | ||
| 31 | //课堂类型 1:1v1(2路流) 2:直播(1路流) 3:小班课(可以多路流) | 31 | //课堂类型 1:1v1(2路流) 2:直播(1路流) 3:小班课(可以多路流) |
| 32 | -ApeConsts.CLASS_TYPE_1 = 1; // 互动课堂,通过MS转发音视频,不能进行H5观看 1v1(2路流) | ||
| 33 | -ApeConsts.CLASS_TYPE_2 = 2; // 直播课堂,通过CDN转发音视频,不能进行音视频互动 :直播(1路流) | ||
| 34 | -ApeConsts.CLASS_TYPE_3 = 3; // 小班课,通过CDN转发音视频,不能进行音视频互动 ::小班课(可以多路流) | 32 | +ApeConsts.CLASS_TYPE_1v1 = 1; // 互动课堂,通过MS转发音视频,不能进行H5观看 1v1(2路流) |
| 33 | +ApeConsts.CLASS_TYPE_ZHIBO = 2; // 直播课堂,通过CDN转发音视频,不能进行音视频互动 :直播(1路流) | ||
| 34 | +ApeConsts.CLASS_TYPE_XIAOBAN = 3; // 小班课,通过CDN转发音视频,不能进行音视频互动 ::小班课(可以多路流) | ||
| 35 | 35 | ||
| 36 | //角色身份 | 36 | //角色身份 |
| 37 | //ApeConsts.NR_GUEST = 0; // 客人 | 37 | //ApeConsts.NR_GUEST = 0; // 客人 |
| @@ -410,7 +410,7 @@ class AudioApe extends Ape { | @@ -410,7 +410,7 @@ class AudioApe extends Ape { | ||
| 410 | receiveChannelInfo.mediaType = unpackChannelInfo.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; | 410 | receiveChannelInfo.mediaType = unpackChannelInfo.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; |
| 411 | receiveChannelInfo.screenWidth = unpackChannelInfo.screenWidth || GlobalConfig.screenWidth; | 411 | receiveChannelInfo.screenWidth = unpackChannelInfo.screenWidth || GlobalConfig.screenWidth; |
| 412 | receiveChannelInfo.screenHeight = unpackChannelInfo.screenHeight || GlobalConfig.screenHeight; | 412 | receiveChannelInfo.screenHeight = unpackChannelInfo.screenHeight || GlobalConfig.screenHeight; |
| 413 | - receiveChannelInfo.deviceType = unpackChannelInfo.deviceType || 0; | 413 | + receiveChannelInfo.deviceType = unpackChannelInfo.deviceType || GlobalConfig.devicePC; |
| 414 | receiveChannelInfo.optionJsonData = unpackChannelInfo.optionJsonData || ""; | 414 | receiveChannelInfo.optionJsonData = unpackChannelInfo.optionJsonData || ""; |
| 415 | 415 | ||
| 416 | //消息不是自己同步的,需要处理 | 416 | //消息不是自己同步的,需要处理 |
| @@ -23,7 +23,7 @@ class ConferApe extends Ape { | @@ -23,7 +23,7 @@ class ConferApe extends Ape { | ||
| 23 | ApeConsts.CONFERENCE_SESSION_NAME, | 23 | ApeConsts.CONFERENCE_SESSION_NAME, |
| 24 | ApeConsts.CONFERENCE_SESSION_TAG | 24 | ApeConsts.CONFERENCE_SESSION_TAG |
| 25 | ); | 25 | ); |
| 26 | - | 26 | + this.isLeave=false;//记录自己是否已经离开 |
| 27 | this.rosters = {}; //用户列表 | 27 | this.rosters = {}; //用户列表 |
| 28 | this.rosterLen = 0;//当前课堂人数 | 28 | this.rosterLen = 0;//当前课堂人数 |
| 29 | this.timerCounter = new TimerCounter(); //计时器 | 29 | this.timerCounter = new TimerCounter(); //计时器 |
| @@ -160,7 +160,7 @@ class ConferApe extends Ape { | @@ -160,7 +160,7 @@ class ConferApe extends Ape { | ||
| 160 | 160 | ||
| 161 | //更新角色数据 | 161 | //更新角色数据 |
| 162 | updateUserInfo() { | 162 | updateUserInfo() { |
| 163 | - if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5==true){ | 163 | + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_ZHIBO&&GlobalConfig.isH5==true){ |
| 164 | //直播模式下H5不处理更新信息 | 164 | //直播模式下H5不处理更新信息 |
| 165 | console.log("直播模式下H5不处理用户更新信息"); | 165 | console.log("直播模式下H5不处理用户更新信息"); |
| 166 | return; | 166 | return; |
| @@ -207,7 +207,7 @@ class ConferApe extends Ape { | @@ -207,7 +207,7 @@ class ConferApe extends Ape { | ||
| 207 | } | 207 | } |
| 208 | return; | 208 | return; |
| 209 | } | 209 | } |
| 210 | - if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5){ | 210 | + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_ZHIBO&&GlobalConfig.isH5){ |
| 211 | loger.warn("直播模式H5不能发送课堂控制消息"); | 211 | loger.warn("直播模式H5不能发送课堂控制消息"); |
| 212 | return; | 212 | return; |
| 213 | } | 213 | } |
| @@ -308,7 +308,7 @@ class ConferApe extends Ape { | @@ -308,7 +308,7 @@ class ConferApe extends Ape { | ||
| 308 | checkHasRecordControl() { | 308 | checkHasRecordControl() { |
| 309 | //loger.warn('检测是否有控制录制操作的权限', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus,"当前人数:"+this.rosterLen); | 309 | //loger.warn('检测是否有控制录制操作的权限', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus,"当前人数:"+this.rosterLen); |
| 310 | //1.如果自己是老师或者当前课堂只有一个人 | 310 | //1.如果自己是老师或者当前课堂只有一个人 |
| 311 | - if (GlobalConfig.isHost || (this.rosterLen <= 1&&GlobalConfig.deviceType!=3)) { | 311 | + if (GlobalConfig.isHost || (this.rosterLen <= 1&&GlobalConfig.deviceType!=GlobalConfig.deviceH5)) { |
| 312 | return true; | 312 | return true; |
| 313 | } | 313 | } |
| 314 | //2.如果自己不是老师,需要判断当前课堂内是否有老师,如果有老师就不做操作 | 314 | //2.如果自己不是老师,需要判断当前课堂内是否有老师,如果有老师就不做操作 |
| @@ -1022,7 +1022,7 @@ class ConferApe extends Ape { | @@ -1022,7 +1022,7 @@ class ConferApe extends Ape { | ||
| 1022 | this.rosterLen = Object.keys(this.rosters).length; | 1022 | this.rosterLen = Object.keys(this.rosters).length; |
| 1023 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 | 1023 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 |
| 1024 | newNodeData.rosterLen = this.rosterLen; | 1024 | newNodeData.rosterLen = this.rosterLen; |
| 1025 | - if(GlobalConfig.classType!= ApeConsts.CLASS_TYPE_2){ | 1025 | + if(GlobalConfig.classType!= ApeConsts.CLASS_TYPE_ZHIBO){ |
| 1026 | loger.log("人员加入->", newNodeData); | 1026 | loger.log("人员加入->", newNodeData); |
| 1027 | } | 1027 | } |
| 1028 | 1028 | ||
| @@ -1034,7 +1034,7 @@ class ConferApe extends Ape { | @@ -1034,7 +1034,7 @@ class ConferApe extends Ape { | ||
| 1034 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 | 1034 | GlobalConfig.rosterNumber = this.rosterLen;//记录当前的总人数 |
| 1035 | newNodeData.rosterLen = this.rosterLen; | 1035 | newNodeData.rosterLen = this.rosterLen; |
| 1036 | if (nodeId != GlobalConfig.nodeId) { | 1036 | if (nodeId != GlobalConfig.nodeId) { |
| 1037 | - if(GlobalConfig.classType!= ApeConsts.CLASS_TYPE_2){ | 1037 | + if(GlobalConfig.classType!= ApeConsts.CLASS_TYPE_ZHIBO){ |
| 1038 | loger.log("人员更新信息->", newNodeData); | 1038 | loger.log("人员更新信息->", newNodeData); |
| 1039 | } | 1039 | } |
| 1040 | } | 1040 | } |
| @@ -1065,7 +1065,7 @@ class ConferApe extends Ape { | @@ -1065,7 +1065,7 @@ class ConferApe extends Ape { | ||
| 1065 | // 因为会出现先收到视频消息后收到人员加入和更新的消息 | 1065 | // 因为会出现先收到视频消息后收到人员加入和更新的消息 |
| 1066 | if(this.rosters[_param.fromNodeId] == null&&this.rosterLen>0){ | 1066 | if(this.rosters[_param.fromNodeId] == null&&this.rosterLen>0){ |
| 1067 | //H5不做释放处理 | 1067 | //H5不做释放处理 |
| 1068 | - if(GlobalConfig.deviceType==3){ | 1068 | + if(GlobalConfig.deviceType==GlobalConfig.deviceH5){ |
| 1069 | loger.warn("H5不做媒体模块的频道释放->当前总人数->"+this.rosterLen, _param); | 1069 | loger.warn("H5不做媒体模块的频道释放->当前总人数->"+this.rosterLen, _param); |
| 1070 | return ; | 1070 | return ; |
| 1071 | } | 1071 | } |
| @@ -1084,8 +1084,9 @@ class ConferApe extends Ape { | @@ -1084,8 +1084,9 @@ class ConferApe extends Ape { | ||
| 1084 | //删除用户 | 1084 | //删除用户 |
| 1085 | rosterDelHandler(nodeId) { | 1085 | rosterDelHandler(nodeId) { |
| 1086 | if (GlobalConfig.nodeId == nodeId) { | 1086 | if (GlobalConfig.nodeId == nodeId) { |
| 1087 | - if(GlobalConfig.classExit==false){ | ||
| 1088 | - loger.log("自己离开课堂"); | 1087 | + if(GlobalConfig.classExit==false||this.isLeave==false){ |
| 1088 | + this.isLeave=true; | ||
| 1089 | + loger.log("自己离开课堂","classExit:"+GlobalConfig.classExit); | ||
| 1089 | // 自己退出 | 1090 | // 自己退出 |
| 1090 | this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 0}); | 1091 | this._emit(MessageTypes.CLASS_RUN_EXIT, {'type': 0}); |
| 1091 | } | 1092 | } |
| @@ -1094,7 +1095,7 @@ class ConferApe extends Ape { | @@ -1094,7 +1095,7 @@ class ConferApe extends Ape { | ||
| 1094 | } else { | 1095 | } else { |
| 1095 | let user = this.rosters[nodeId]; | 1096 | let user = this.rosters[nodeId]; |
| 1096 | if (user) { | 1097 | if (user) { |
| 1097 | - if(GlobalConfig.classType!= ApeConsts.CLASS_TYPE_2){ | 1098 | + if(GlobalConfig.classType!= ApeConsts.CLASS_TYPE_ZHIBO){ |
| 1098 | loger.log(nodeId, "->离开课堂->身份->", user.userRole); | 1099 | loger.log(nodeId, "->离开课堂->身份->", user.userRole); |
| 1099 | } | 1100 | } |
| 1100 | 1101 | ||
| @@ -1204,6 +1205,7 @@ class ConferApe extends Ape { | @@ -1204,6 +1205,7 @@ class ConferApe extends Ape { | ||
| 1204 | this.rosterLen = 0; | 1205 | this.rosterLen = 0; |
| 1205 | GlobalConfig.rosterNumber = this.rosterLen; | 1206 | GlobalConfig.rosterNumber = this.rosterLen; |
| 1206 | GlobalConfig.rosters = this.rosters; | 1207 | GlobalConfig.rosters = this.rosters; |
| 1208 | + this.isLeave=true; | ||
| 1207 | } | 1209 | } |
| 1208 | 1210 | ||
| 1209 | } | 1211 | } |
| @@ -20,7 +20,7 @@ class VideoApe extends Ape { | @@ -20,7 +20,7 @@ class VideoApe extends Ape { | ||
| 20 | ApeConsts.VIDEO_SESSION_NAME, | 20 | ApeConsts.VIDEO_SESSION_NAME, |
| 21 | ApeConsts.VIDEO_SESSION_TAG | 21 | ApeConsts.VIDEO_SESSION_TAG |
| 22 | ); | 22 | ); |
| 23 | - | 23 | + this.isLeave=false; |
| 24 | this.mediaModule = new MediaModule(); | 24 | this.mediaModule = new MediaModule(); |
| 25 | this.mediaModule.MEDIA_OBJ_TABLE_ID = ApeConsts.VIDEO_OBJ_TABLE_ID; | 25 | this.mediaModule.MEDIA_OBJ_TABLE_ID = ApeConsts.VIDEO_OBJ_TABLE_ID; |
| 26 | this.mediaModule.mediaChannels = {}; | 26 | this.mediaModule.mediaChannels = {}; |
| @@ -37,7 +37,6 @@ class VideoApe extends Ape { | @@ -37,7 +37,6 @@ class VideoApe extends Ape { | ||
| 37 | // Ape Models | 37 | // Ape Models |
| 38 | this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); | 38 | this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); |
| 39 | this.registerObj(pdu.RCPDU_REG_REGISTER_TABLE, ApeConsts.VIDEO_OBJ_TABLE_ID, ApeConsts.VIDEO_OBJ_TABLE_NAME, ApeConsts.VIDEO_OBJ_TABLE_TAG, 0, new ArrayBuffer); | 39 | this.registerObj(pdu.RCPDU_REG_REGISTER_TABLE, ApeConsts.VIDEO_OBJ_TABLE_ID, ApeConsts.VIDEO_OBJ_TABLE_NAME, ApeConsts.VIDEO_OBJ_TABLE_TAG, 0, new ArrayBuffer); |
| 40 | - | ||
| 41 | // videoApe 监听视频控制消息,用户之间的消息传递 | 40 | // videoApe 监听视频控制消息,用户之间的消息传递 |
| 42 | this.on(pdu.RCPDU_SEND_VIDEO_DATA_REQUEST, this.receiveVideoCommandHandler.bind(this)); | 41 | this.on(pdu.RCPDU_SEND_VIDEO_DATA_REQUEST, this.receiveVideoCommandHandler.bind(this)); |
| 43 | } | 42 | } |
| @@ -425,7 +424,7 @@ class VideoApe extends Ape { | @@ -425,7 +424,7 @@ class VideoApe extends Ape { | ||
| 425 | this.sendTableUpdateHandler(channelInfo); | 424 | this.sendTableUpdateHandler(channelInfo); |
| 426 | //递归检查,800毫秒之后执行 | 425 | //递归检查,800毫秒之后执行 |
| 427 | clearTimeout(this.releaseTimeId); | 426 | clearTimeout(this.releaseTimeId); |
| 428 | - if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.isH5){ | 427 | + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_ZHIBO&&GlobalConfig.isH5){ |
| 429 | return; | 428 | return; |
| 430 | } | 429 | } |
| 431 | this.releaseTimeId = setTimeout(function () { | 430 | this.releaseTimeId = setTimeout(function () { |
| @@ -498,6 +497,11 @@ class VideoApe extends Ape { | @@ -498,6 +497,11 @@ class VideoApe extends Ape { | ||
| 498 | //发送到mcu同步(更新数据) | 497 | //发送到mcu同步(更新数据) |
| 499 | sendTableUpdateHandler(_channelInfo) { | 498 | sendTableUpdateHandler(_channelInfo) { |
| 500 | //loger.log("video===sendTableUpdateHandler "); | 499 | //loger.log("video===sendTableUpdateHandler "); |
| 500 | + if(GlobalConfig.classExit||this.isLeave){ | ||
| 501 | + //已经离开课堂就不再做处理 | ||
| 502 | + return; | ||
| 503 | + } | ||
| 504 | + | ||
| 501 | let updateModelPdu = this.packPdu(_channelInfo, _channelInfo.channelId);//let updateModelPdu=this.packPdu({},ApeConsts.VIDEO_OBJ_TABLE_ID+2); | 505 | let updateModelPdu = this.packPdu(_channelInfo, _channelInfo.channelId);//let updateModelPdu=this.packPdu({},ApeConsts.VIDEO_OBJ_TABLE_ID+2); |
| 502 | 506 | ||
| 503 | if (updateModelPdu == null) { | 507 | if (updateModelPdu == null) { |
| @@ -662,7 +666,7 @@ class VideoApe extends Ape { | @@ -662,7 +666,7 @@ class VideoApe extends Ape { | ||
| 662 | receiveChannelInfo.mediaType = unpackChannelInfo.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; | 666 | receiveChannelInfo.mediaType = unpackChannelInfo.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; |
| 663 | receiveChannelInfo.screenWidth = unpackChannelInfo.screenWidth || GlobalConfig.screenWidth; | 667 | receiveChannelInfo.screenWidth = unpackChannelInfo.screenWidth || GlobalConfig.screenWidth; |
| 664 | receiveChannelInfo.screenHeight = unpackChannelInfo.screenHeight || GlobalConfig.screenHeight; | 668 | receiveChannelInfo.screenHeight = unpackChannelInfo.screenHeight || GlobalConfig.screenHeight; |
| 665 | - receiveChannelInfo.deviceType = unpackChannelInfo.deviceType || 0; | 669 | + receiveChannelInfo.deviceType = unpackChannelInfo.deviceType || GlobalConfig.devicePC; |
| 666 | receiveChannelInfo.optionJsonData = unpackChannelInfo.optionJsonData || ""; | 670 | receiveChannelInfo.optionJsonData = unpackChannelInfo.optionJsonData || ""; |
| 667 | //消息不是自己同步的,需要处理 | 671 | //消息不是自己同步的,需要处理 |
| 668 | if (unpackChannelInfo.status == ApeConsts.CHANNEL_STATUS_OPENING) { | 672 | if (unpackChannelInfo.status == ApeConsts.CHANNEL_STATUS_OPENING) { |
| @@ -782,7 +786,7 @@ class VideoApe extends Ape { | @@ -782,7 +786,7 @@ class VideoApe extends Ape { | ||
| 782 | mediaChannelInfo.mediaType = _param.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; | 786 | mediaChannelInfo.mediaType = _param.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; |
| 783 | mediaChannelInfo.screenWidth = _param.screenWidth || GlobalConfig.screenWidth; | 787 | mediaChannelInfo.screenWidth = _param.screenWidth || GlobalConfig.screenWidth; |
| 784 | mediaChannelInfo.screenHeight = _param.screenHeight || GlobalConfig.screenHeight; | 788 | mediaChannelInfo.screenHeight = _param.screenHeight || GlobalConfig.screenHeight; |
| 785 | - mediaChannelInfo.deviceType = _param.deviceType || 0; | 789 | + mediaChannelInfo.deviceType = _param.deviceType || GlobalConfig.devicePC; |
| 786 | mediaChannelInfo.optionJsonData = _param.optionJsonData || ""; | 790 | mediaChannelInfo.optionJsonData = _param.optionJsonData || ""; |
| 787 | mediaChannelInfo.m3u8Url = ""; | 791 | mediaChannelInfo.m3u8Url = ""; |
| 788 | mediaChannelInfo.rtmpUrl = ""; | 792 | mediaChannelInfo.rtmpUrl = ""; |
| @@ -884,6 +888,9 @@ class VideoApe extends Ape { | @@ -884,6 +888,9 @@ class VideoApe extends Ape { | ||
| 884 | } | 888 | } |
| 885 | return null; | 889 | return null; |
| 886 | } | 890 | } |
| 891 | + stopApe(){ | ||
| 892 | + this.isLeave=true; | ||
| 893 | + } | ||
| 887 | } | 894 | } |
| 888 | 895 | ||
| 889 | export default VideoApe; | 896 | export default VideoApe; |
| @@ -245,7 +245,7 @@ class WebRtcApe extends Emiter { | @@ -245,7 +245,7 @@ class WebRtcApe extends Emiter { | ||
| 245 | $("#"+this.xdyRemote + uid).remove(); | 245 | $("#"+this.xdyRemote + uid).remove(); |
| 246 | } | 246 | } |
| 247 | } | 247 | } |
| 248 | - if (user && (user.deviceType == 1 || user.deviceType == 2)) { | 248 | + if (user && (user.deviceType == GlobalConfig.deviceIOS || user.deviceType == GlobalConfig.deviceAndroid)) { |
| 249 | this.remoteVideoList[user.nodeId] = stream; | 249 | this.remoteVideoList[user.nodeId] = stream; |
| 250 | } | 250 | } |
| 251 | } | 251 | } |
| @@ -105,7 +105,7 @@ class MCU extends Emiter { | @@ -105,7 +105,7 @@ class MCU extends Emiter { | ||
| 105 | pduMsg.set("deviceType", "" + GlobalConfig.deviceType); | 105 | pduMsg.set("deviceType", "" + GlobalConfig.deviceType); |
| 106 | pduMsg.set("data", joinRequestPdu.toArrayBuffer()); | 106 | pduMsg.set("data", joinRequestPdu.toArrayBuffer()); |
| 107 | 107 | ||
| 108 | - this._everSocket.send(pduMsg.toArrayBuffer()); | 108 | + this._everSocket.send(pduMsg.toArrayBuffer(),joinRequestPdu.type); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | // EverSocket底层消息处理 | 111 | // EverSocket底层消息处理 |
| @@ -197,7 +197,7 @@ class MCU extends Emiter { | @@ -197,7 +197,7 @@ class MCU extends Emiter { | ||
| 197 | send(msg) { | 197 | send(msg) { |
| 198 | if (this.connected) { | 198 | if (this.connected) { |
| 199 | // loger.log('发送数据到服务端-------------------->'); | 199 | // loger.log('发送数据到服务端-------------------->'); |
| 200 | - this._everSocket.send(msg.toArrayBuffer()); | 200 | + this._everSocket.send(msg.toArrayBuffer(),msg.type); |
| 201 | } else { | 201 | } else { |
| 202 | loger.warn('发送数据到服务端-------------------->失败->未连接到服务端'); | 202 | loger.warn('发送数据到服务端-------------------->失败->未连接到服务端'); |
| 203 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_SOCKET_DISCONNECT); | 203 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_SOCKET_DISCONNECT); |
| @@ -209,7 +209,9 @@ class MCU extends Emiter { | @@ -209,7 +209,9 @@ class MCU extends Emiter { | ||
| 209 | loger.log('leaveMCU'); | 209 | loger.log('leaveMCU'); |
| 210 | GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3); | 210 | GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3); |
| 211 | GlobalConfig.classJoinSuccess = false; | 211 | GlobalConfig.classJoinSuccess = false; |
| 212 | - this._everSocket.end(); | 212 | + if( this._everSocket){ |
| 213 | + this._everSocket.end(); | ||
| 214 | + } | ||
| 213 | } | 215 | } |
| 214 | 216 | ||
| 215 | // 主动建立MCU连接 | 217 | // 主动建立MCU连接 |
| @@ -223,9 +225,15 @@ class MCU extends Emiter { | @@ -223,9 +225,15 @@ class MCU extends Emiter { | ||
| 223 | loger.log(_classInfo); | 225 | loger.log(_classInfo); |
| 224 | _classInfo.classId = parseInt(_classInfo.classId); // classId 必须整形 | 226 | _classInfo.classId = parseInt(_classInfo.classId); // classId 必须整形 |
| 225 | this.classInfo = _classInfo; | 227 | this.classInfo = _classInfo; |
| 228 | + | ||
| 226 | // 创建刷新nodeId | 229 | // 创建刷新nodeId |
| 227 | - this.classInfo.nodeId = EngineUtils.creatSoleNumberFromTimestamp(); | 230 | + let randNodeId =parseInt(Math.random()*1000)+""+parseInt(Math.random()*1000)+""+parseInt(Math.random()*1000); |
| 231 | + //生成的字符串nodeId转换为数字 | ||
| 232 | + randNodeId=parseInt(randNodeId); | ||
| 233 | + | ||
| 234 | + this.classInfo.nodeId =randNodeId; //EngineUtils.creatSoleNumberFromTimestamp(); | ||
| 228 | GlobalConfig.nodeId = this.classInfo.nodeId; //这是标识自己身份的id | 235 | GlobalConfig.nodeId = this.classInfo.nodeId; //这是标识自己身份的id |
| 236 | + console.log("创建nodeId",GlobalConfig.nodeId); | ||
| 229 | 237 | ||
| 230 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; | 238 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; |
| 231 | nodeInfoRecordPdu.name = this.classInfo.userName; | 239 | nodeInfoRecordPdu.name = this.classInfo.userName; |
-
请 注册 或 登录 后发表评论