李勇

整理代码格式

... ... @@ -26,7 +26,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil';
import UTF8 from 'utf-8';
let loger = Loger.getLoger('MessageEntrance');
let _sdkInfo = {"version": "v1.9.4.20170417", "author": "www.3mang.com"};
let _sdkInfo = {"version": "v1.9.5.20170417", "author": "www.3mang.com"};
//APE
let _sass;
... ... @@ -141,7 +141,7 @@ export default class MessageEntrance extends Emiter {
this.getVideoPublishPath = this._getVideoPublishPath.bind(this);
this.getVideoAllChannelInfo = this._getVideoAllChannelInfo.bind(this);
this.publishVideo = this._publishVideo.bind(this);
this.stopPublishVideo =this.unPublishVideo= this._stopPublishVideo.bind(this);
this.stopPublishVideo = this.unPublishVideo = this._stopPublishVideo.bind(this);
this.sendVideoBroadcastMsg = this._sendVideoBroadcastMsg.bind(this);
... ... @@ -150,7 +150,7 @@ export default class MessageEntrance extends Emiter {
this.getAudioPublishPath = this._getPublishAudioPath.bind(this);
this.getAudioAllChannelInfo = this._getAudioAllChannelInfo.bind(this);
this.publishAudio = this._publishAudio.bind(this);
this.stopPublishAudio =this.unPublishAudio= this._stopPublishAudio.bind(this);
this.stopPublishAudio = this.unPublishAudio = this._stopPublishAudio.bind(this);
this.sendAudioBroadcastMsg = this.sendAudioCommandMsg.bind(this);
//whiteBoradApe
... ... @@ -164,7 +164,7 @@ export default class MessageEntrance extends Emiter {
this.sendDocumentSwitchDoc = this._sendDocumentSwitchDoc.bind(this); //切换文档
this.sendDocumentSwitchPage = this._sendDocumentSwitchPage.bind(this);//翻页
this.sendDocumentDelete = this._sassDeleteDocument.bind(this);
this.sendDocBroadcastMsg=this._sendDocBroadcastMsg.bind(this);
this.sendDocBroadcastMsg = this._sendDocBroadcastMsg.bind(this);
//删除文档,先通过Sass删除,sass删除成功之后再同步mcu
//this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档
this.sendDocumentCommand = this._sendDocumentCommand.bind(this);
... ... @@ -172,22 +172,24 @@ export default class MessageEntrance extends Emiter {
this.getDocImageFullPath = this._getDocImageFullPath.bind(this);
//获取文档图片的完整路径
this.getDocPDFFullPath = this._getDocPDFFullPath.bind(this);//获取文档的完整路径
this.getDocFullAddress=this._getDocFullAddress.bind(this);//获取文档资源地址
this.getDocFullAddress = this._getDocFullAddress.bind(this);//获取文档资源地址
this.setDebuger = this._setDebuger.bind(this);//debug
this.setMessageDelay=this._setMessageDelay.bind(this);//设置是否延迟消息
this.setMessageDelay = this._setMessageDelay.bind(this);//设置是否延迟消息
}
_setDebuger(_data){
GlobalConfig.isDebuger=_data.isDebuger||true;
_setDebuger(_data) {
GlobalConfig.isDebuger = _data.isDebuger || true;
}
_setMessageDelay(_data){
loger.warn("延迟消息-->", _data);
if(_data){
GlobalConfig.messageDelay=Boolean(_data.messageDelay);
}
}
_setMessageDelay(_data) {
loger.warn("延迟消息-->", _data);
if (_data) {
GlobalConfig.messageDelay = Boolean(_data.messageDelay);
}
}
//mcu异常监听
_mcuErrorHandler(_data, _option) {
let option = _option || "";
... ... @@ -241,12 +243,13 @@ export default class MessageEntrance extends Emiter {
_sass.saveClassRecordContrlInfo(_param);
}
}
//开启录制成功
_onClassRecordSuccess(_param){
if(_doc_ape){
_onClassRecordSuccess(_param) {
if (_doc_ape) {
_doc_ape.updaterRecordStatus();
}
if(_whiteboard_ape){
if (_whiteboard_ape) {
_whiteboard_ape.updaterRecordStatus();
}
}
... ... @@ -271,7 +274,7 @@ export default class MessageEntrance extends Emiter {
//当前课堂中视频或音频占用channel的nodeId ,在人员列表中不存在,这种情况是占用channel的人员掉线或离开的时候没有释放channel
//的占用状态导致,对于这种情况,需要释放掉
_onClassNonentityRoster(_param) {
if(GlobalConfig.isRecordPlayBack){
if (GlobalConfig.isRecordPlayBack) {
loger.warn("录制回放中,不处理")
return;
}
... ... @@ -309,7 +312,7 @@ export default class MessageEntrance extends Emiter {
loger.log('init', _param);
//保存参数
GlobalConfig.isRecordPlayBack=false;//设置为非录制回放状态
GlobalConfig.isRecordPlayBack = false;//设置为非录制回放状态
GlobalConfig.classId = parseInt(_param.classId);
GlobalConfig.portal = _param.portal;
GlobalConfig.userId = _param.userId || "0";
... ... @@ -317,20 +320,20 @@ export default class MessageEntrance extends Emiter {
//设置角色身份
GlobalConfig.userRole = _param.userRole || ApeConsts.normal;
if(GlobalConfig.userRole!=ApeConsts.host&&
GlobalConfig.userRole!=ApeConsts.presenter&&
GlobalConfig.userRole!=ApeConsts.assistant&&
GlobalConfig.userRole!=ApeConsts.record&&
GlobalConfig.userRole!=ApeConsts.invisible){
GlobalConfig.userRole= ApeConsts.normal;
if (GlobalConfig.userRole != ApeConsts.host &&
GlobalConfig.userRole != ApeConsts.presenter &&
GlobalConfig.userRole != ApeConsts.assistant &&
GlobalConfig.userRole != ApeConsts.record &&
GlobalConfig.userRole != ApeConsts.invisible) {
GlobalConfig.userRole = ApeConsts.normal;
}
//客户端决定是否延迟接收消息
GlobalConfig.messageDelay = _param.messageDelay || false;
//最长允许录制的时间
if(_param.allowRecordMaxTime){
GlobalConfig.allowRecordMaxTime=parseInt(_param.allowRecordMaxTime);
if (_param.allowRecordMaxTime) {
GlobalConfig.allowRecordMaxTime = parseInt(_param.allowRecordMaxTime);
}
//获取课堂校验信息
... ... @@ -341,8 +344,6 @@ export default class MessageEntrance extends Emiter {
//外部请求加入课堂
_joinClass(_param) {
//_joinClassSuccessCallBackFun = _onSuccess;
//{"userName":"名字","password":""}
if (_param == null || EngineUtils.isEmptyObject(_param)) {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_PARAM);
loger.log('不能进入课堂,传递的参数不对.', _param);
... ... @@ -354,22 +355,22 @@ export default class MessageEntrance extends Emiter {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_PARAM);
return;
}
GlobalConfig.userName = _param.userName||GlobalConfig.userName;//以登陆时的名字为主,登陆之前可以修改名字
GlobalConfig.autoLogin=_param.autoLogin||"";
//{"userName":"名字","password":"","autoLogin":""}
GlobalConfig.userName = _param.userName || GlobalConfig.userName;//以登陆时的名字为主,登陆之前可以修改名字
GlobalConfig.autoLogin = _param.autoLogin || "";
GlobalConfig.password = _param.password || "";
GlobalConfig.hasCamera = (typeof _param.hasCamera == "boolean") ? _param.hasCamera : false;
GlobalConfig.hasMicrophone = (typeof _param.hasMicrophone == "boolean") ? _param.hasMicrophone : false;
loger.log("autoLoginMd5",GlobalConfig.classId,GlobalConfig.userId,GlobalConfig.userRole);
let autoLoginMd5=MD5(""+GlobalConfig.classId+GlobalConfig.userId+GlobalConfig.userRole);
loger.log("joinClass-GlobalConfig.autoLogin",GlobalConfig.autoLogin,"autoLoginMd5-",autoLoginMd5);
if(GlobalConfig.autoLogin&&autoLoginMd5==GlobalConfig.autoLogin){
// MD5(classId+userId+userRole)==m
loger.log("autoLoginMd5", GlobalConfig.classId, GlobalConfig.userId, GlobalConfig.userRole);
let autoLoginMd5 = MD5("" + GlobalConfig.classId + GlobalConfig.userId + GlobalConfig.userRole);
loger.log("joinClass-GlobalConfig.autoLogin", GlobalConfig.autoLogin, "autoLoginMd5-", autoLoginMd5);
if (GlobalConfig.autoLogin && autoLoginMd5 == GlobalConfig.autoLogin) {
// MD5(classId+userId+userRole)==m
//自动登录,跳过验证流程
loger.log("自动登录");
this._sassJoinSuccessHandler();
}else {
} else {
//不能自动登录,开始校验
if (_sass) {
_sass.passwordAndMd5Checking(GlobalConfig.getClassInfo());
... ... @@ -414,28 +415,15 @@ export default class MessageEntrance extends Emiter {
// 通过SASS平台验证(密码和MD5)
_sassJoinSuccessHandler(_data) {
//返回值
/* flag 数值型 无 True:成功
Flag:失败
h5_mcu_list 字符串 H5muc列表
maxVideoChannels 数值型 最大视频路数
maxAudioChannels 数值型 最大音频路数
h5Module 数值型 H5开关
ms 字符串 Ms列表
mcu 字符串 Mcu列表
rs 字符串 Rs列表
doc 字符串 Doc列表*/
//获取课堂最完整的数据
if (_sass) {
_sass.getClassParam();
}
}
//获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do
//获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do
_sassGetClassParamSuccessHandler(_data) {
//console.log(GlobalConfig.classStatusInfo)
loger.log('获取课堂课堂的完整信息完成.');
// console.log(_data);
//包含整个课堂最全的信息,储存数据
if (_data) {
GlobalConfig.mcuDelay = _data.h5Delay || 0;//mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用
... ... @@ -448,12 +436,13 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.maxAudioChannels = _data.maxAudioChannels;
//视频质量相关设置
GlobalConfig.fps = _data.fps||15;
GlobalConfig.gop = _data.gop||3;;
GlobalConfig.videoQuality = _data.videoQuality||2;
GlobalConfig.fps = _data.fps || 15;
GlobalConfig.gop = _data.gop || 3;
;
GlobalConfig.videoQuality = _data.videoQuality || 2;
//是否自动开始(身份是host的时候才用到的)
GlobalConfig.isAutoStartClass= _data.autoRecord||0;
GlobalConfig.isAutoStartClass = _data.autoRecord || 0;
GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表
GlobalConfig.setRecordList(_data.recordList);//录制回放地址
... ... @@ -465,37 +454,37 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.setMusicListPrepare(_data.musicListPrepare);//提前上传的声音文件列表
if (_data.mcuList&&_data.mcuList.length>0) {
if (_data.mcuList && _data.mcuList.length > 0) {
//MCU地址默认使用第一个
GlobalConfig.MCUServerIP = _data.mcuList[0].ip || "";
GlobalConfig.MCUServerPort = _data.mcuList[0].port || "";
}
//上课中视频推流播流地址
if (_data.msList&&_data.msList.length>0) {
if (_data.msList && _data.msList.length > 0) {
//MS地址默认使用第一个
GlobalConfig.MSServerIP = _data.msList[0].ip || "";
GlobalConfig.MSServerPort = _data.msList[0].port || "";
}
//录制回放时m3u8播流地址
if (_data.rsList&&_data.rsList.length>0) {
if (_data.rsList && _data.rsList.length > 0) {
//RS地址默认使用第一个
GlobalConfig.RSServerIP = _data.rsList[0].ip || "";
GlobalConfig.RSServerPort = _data.rsList[0].port || "";
}
//文档地址
if (_data.docList&&_data.docList.length>0) {
if (_data.docList && _data.docList.length > 0) {
//doc上传地址,随机获取一个
let index=parseInt(Math.random()*_data.docList.length);
let index = parseInt(Math.random() * _data.docList.length);
loger.log("docServer->", _data.docList[index]);
GlobalConfig.DOCServerIP = _data.docList[index].ip || "";
GlobalConfig.DOCServerPort = _data.docList[index].port || "";
}
//record
if (_data.recordList&&_data.recordList.length>0) {
if (_data.recordList && _data.recordList.length > 0) {
//地址默认使用第一个
GlobalConfig.RecordServerIP = _data.recordList[0].ip || "";
GlobalConfig.RecordServerPort = _data.recordList[0].port || "";
... ... @@ -508,7 +497,7 @@ export default class MessageEntrance extends Emiter {
loger.log("本地同步最后一次保存过的课堂状态信息");
try {
GlobalConfig.setClassStatusInfo(JSON.parse(_data.currentInfo));
}catch (err){
} catch (err) {
GlobalConfig.setClassStatusInfo(_data.currentInfo);
}
loger.log(GlobalConfig.classStatusInfo);
... ... @@ -518,21 +507,21 @@ export default class MessageEntrance extends Emiter {
//录制回放不需要选点
if(GlobalConfig.isRecordPlayBack){
if (GlobalConfig.isRecordPlayBack) {
if (_recordPlayback) {
//开启录制回放流程
loger.log("开启录制回放流程");
_recordPlayback.readyRecordPlay();
}else {
} else {
loger.warn("开启录制回放流程失败,还未创建模块");
}
}else {
} else {
//根据用户的userIp获取信息
this.getUserIpInfo();
}
}
//根据UserIp获取ip信息
//根据UserIp获取ip信息,选点
getUserIpInfo() {
if (_serverCheck) {
_serverCheck.getUserIpInfo("", GlobalConfig.userIp);
... ... @@ -549,12 +538,12 @@ export default class MessageEntrance extends Emiter {
_sassSaveClassStatusInfo(_param) {
//{isForce:true} isForce->是否强制提交(true为是)
//这个是特殊权限
let isForce=false;
if(_param&&_param.isForce==true){
isForce=true;
let isForce = false;
if (_param && _param.isForce == true) {
isForce = true;
}
if (GlobalConfig.isHost||isForce) {
if (GlobalConfig.isHost || isForce) {
//只有加入课堂之后才能保存数据
if (GlobalConfig.getCurrentStatus().code == GlobalConfig.statusCode_2.code) {
//POST 保存数据
... ... @@ -594,12 +583,12 @@ export default class MessageEntrance extends Emiter {
//返回给客户端初始化成功的数据
let joinClassSuccessCallBackData = {};
joinClassSuccessCallBackData.isRecordPlayBack=GlobalConfig.isRecordPlayBack;
joinClassSuccessCallBackData.isRecordPlayBack = GlobalConfig.isRecordPlayBack;
joinClassSuccessCallBackData.DOCServerIP = GlobalConfig.DOCServerIP;
joinClassSuccessCallBackData.DOCServerPort = GlobalConfig.DOCServerPort;
joinClassSuccessCallBackData.classStatus= GlobalConfig.classStatus;
joinClassSuccessCallBackData.classStatus = GlobalConfig.classStatus;
joinClassSuccessCallBackData.classId = GlobalConfig.classId;
joinClassSuccessCallBackData.className = GlobalConfig.className;
joinClassSuccessCallBackData.h5Module = GlobalConfig.h5Module;
... ... @@ -634,13 +623,13 @@ export default class MessageEntrance extends Emiter {
joinClassSuccessCallBackData.province = GlobalConfig.province;//服务商
joinClassSuccessCallBackData.isp = GlobalConfig.isp;//服务商
joinClassSuccessCallBackData.classTimestamp=GlobalConfig.classTimestamp;//课堂进行的累积时间
joinClassSuccessCallBackData.recordTimestamp=GlobalConfig.recordTimestamp;//课堂录制的累积时间
joinClassSuccessCallBackData.recordPlaybackMaxTime=GlobalConfig.recordPlaybackMaxTime;//录制回放的总时间
joinClassSuccessCallBackData.classTimestamp = GlobalConfig.classTimestamp;//课堂进行的累积时间
joinClassSuccessCallBackData.recordTimestamp = GlobalConfig.recordTimestamp;//课堂录制的累积时间
joinClassSuccessCallBackData.recordPlaybackMaxTime = GlobalConfig.recordPlaybackMaxTime;//录制回放的总时间
joinClassSuccessCallBackData.fps=GlobalConfig.fps;
joinClassSuccessCallBackData.gop=GlobalConfig.gop;
joinClassSuccessCallBackData.videoQuality=GlobalConfig.videoQuality;
joinClassSuccessCallBackData.fps = GlobalConfig.fps;
joinClassSuccessCallBackData.gop = GlobalConfig.gop;
joinClassSuccessCallBackData.videoQuality = GlobalConfig.videoQuality;
loger.log('加入课堂成功');
loger.log(joinClassSuccessCallBackData);
... ... @@ -675,7 +664,7 @@ export default class MessageEntrance extends Emiter {
}
}
_sendDocBroadcastMsg(_param){
_sendDocBroadcastMsg(_param) {
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return;
... ... @@ -684,6 +673,7 @@ export default class MessageEntrance extends Emiter {
_doc_ape.sendDocBroadcastMsg(_param);
}
}
//Sass删除文档成功之后,同步删除MCU数据
_sassDeleteDocumentSuccess(_param) {
loger.log('sassDeleteDocumentSuccess', _param);
... ... @@ -807,7 +797,7 @@ export default class MessageEntrance extends Emiter {
_publishVideo(_param) {
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code":ApeConsts.RETURN_FAILED, "data":""};
return {"code": ApeConsts.RETURN_FAILED, "data": ""};
}
if (_video_ape) {
return _video_ape.publishVideo(_param);
... ... @@ -817,7 +807,7 @@ export default class MessageEntrance extends Emiter {
_stopPublishVideo(_param) {
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code":ApeConsts.RETURN_FAILED, "data":""};
return {"code": ApeConsts.RETURN_FAILED, "data": ""};
}
if (_video_ape) {
return _video_ape.stopPublishVideo(_param);
... ... @@ -835,7 +825,7 @@ export default class MessageEntrance extends Emiter {
sendAudioCommandMsg(_param) {
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code":ApeConsts.RETURN_FAILED, "data":""};
return {"code": ApeConsts.RETURN_FAILED, "data": ""};
}
if (_audio_ape) {
return _audio_ape.sendAudioBroadcastMsg(_param);
... ... @@ -863,7 +853,7 @@ export default class MessageEntrance extends Emiter {
_publishAudio(_param) {
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code":ApeConsts.RETURN_FAILED, "data":""};
return {"code": ApeConsts.RETURN_FAILED, "data": ""};
}
if (_audio_ape) {
return _audio_ape.publishAudio(_param);
... ... @@ -873,7 +863,7 @@ export default class MessageEntrance extends Emiter {
_stopPublishAudio(_param) {
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code":ApeConsts.RETURN_FAILED, "data":""};
return {"code": ApeConsts.RETURN_FAILED, "data": ""};
}
if (_audio_ape) {
return _audio_ape.stopPublishAudio(_param);
... ... @@ -892,6 +882,7 @@ export default class MessageEntrance extends Emiter {
_whiteboard_ape.sendInsetAnnotaion(_param);
}
}
//删除当前页面上的所有标注
_sendDeleteCurPageAnnotation(_param) {
if (!_mcu.connected) {
... ... @@ -929,7 +920,7 @@ export default class MessageEntrance extends Emiter {
return _doc_ape.getDocFullAddress(_param);
} else {
loger.error("文档模块还没有创建无法获取");
return {"code":ApeConsts.RETURN_FAILED, "data": "文档模块还没有创建无法获取"};
return {"code": ApeConsts.RETURN_FAILED, "data": "文档模块还没有创建无法获取"};
}
}
... ... @@ -942,6 +933,7 @@ export default class MessageEntrance extends Emiter {
return [];
}
}
_getDocPDFFullPath(_param) {
if (_doc_ape) {
return _doc_ape.getDocPDFFullPath(_param);
... ... @@ -1019,7 +1011,7 @@ export default class MessageEntrance extends Emiter {
//// 文档变更,白板也需要做处理
docUpdateHandler(_data) {
if (!_mcu.connected&&!GlobalConfig.isRecordPlayBack) {
if (!_mcu.connected && !GlobalConfig.isRecordPlayBack) {
loger.warn(GlobalConfig.getCurrentStatus());
return;
}
... ... @@ -1039,12 +1031,12 @@ export default class MessageEntrance extends Emiter {
//文档加入频道成功,同步到MCU服务器上的数据
docJoinChannelSuccess() {
loger.log("docJoinChannelSuccess->isHost=", GlobalConfig.isHost,"length=",GlobalConfig.docListPrepare.length);
loger.log("docJoinChannelSuccess->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.docListPrepare.length);
//loger.log("docJoinChannelSuccess docListPrepare=");
//如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
if (GlobalConfig.isHost&&GlobalConfig.docListPrepare.length>0) {
for (let i=0;i<GlobalConfig.docListPrepare.length;i++) {
let value=GlobalConfig.docListPrepare[i];
if (GlobalConfig.isHost && GlobalConfig.docListPrepare.length > 0) {
for (let i = 0; i < GlobalConfig.docListPrepare.length; i++) {
let value = GlobalConfig.docListPrepare[i];
if (value) {
//loger.log("判断是否需要把提前上传的文档上传到mcu", value);
let paramInfo = {
... ... @@ -1066,7 +1058,7 @@ export default class MessageEntrance extends Emiter {
//录制回放相关的处理------------------------------------------------
//录制回放初始化
_initRecordPlayback(_param){
_initRecordPlayback(_param) {
//{"classId":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0}
if (_param == null) {
loger.error('录制回放初始化失败,参数错误');
... ... @@ -1082,10 +1074,10 @@ export default class MessageEntrance extends Emiter {
loger.log('录制回放初始化->', _param);
//保存参数
GlobalConfig.isRecordPlayBack=true;//设置为录制回放状态
GlobalConfig.isRecordPlayBack = true;//设置为录制回放状态
GlobalConfig.classId = parseInt(_param.classId);
GlobalConfig.portal = _param.portal;
GlobalConfig.userRole =ApeConsts.normal;//*************很重要,录制回放的时候,身份模式是普通人********
GlobalConfig.userRole = ApeConsts.normal;//*************很重要,录制回放的时候,身份模式是普通人********
GlobalConfig.userId = _param.userId || "0";
GlobalConfig.userName = _param.userName || "";
... ... @@ -1101,18 +1093,21 @@ export default class MessageEntrance extends Emiter {
_recordPlayback.startRecordPlayback(_param);
}
}
//停止录制回放
_stopRecordPlayback(_param) {
if (_recordPlayback) {
_recordPlayback.stopRecordPlayback(_param);
}
}
//暂停录制回放
_pauseRecordPlayback(_param) {
if (_recordPlayback) {
_recordPlayback.pauseRecordPlayback(_param);
}
}
//seek录制回放
_seekRecordPlayback(_param) {
if (_recordPlayback) {
... ... @@ -1121,15 +1116,16 @@ export default class MessageEntrance extends Emiter {
}
//录制回放状态更新
_recordPlaybackClearDataHandler(_param){
_recordPlaybackClearDataHandler(_param) {
loger.log("_recordPlaybackClearDataHandler->")
if(_doc_ape){
if (_doc_ape) {
_doc_ape.clearData();
}
if(_whiteboard_ape){
if (_whiteboard_ape) {
_whiteboard_ape.clearData();
}
}
//录制回放加入 课堂成功
_joinRecordPlaybackSuccessHandler(_data) {
loger.log('加入录制回放成功.');
... ... @@ -1138,12 +1134,12 @@ export default class MessageEntrance extends Emiter {
//返回给客户端初始化成功的数据
let joinClassSuccessCallBackData = {};
joinClassSuccessCallBackData.isRecordPlayBack=GlobalConfig.isRecordPlayBack;
joinClassSuccessCallBackData.isRecordPlayBack = GlobalConfig.isRecordPlayBack;
joinClassSuccessCallBackData.DOCServerIP = GlobalConfig.DOCServerIP;
joinClassSuccessCallBackData.DOCServerPort = GlobalConfig.DOCServerPort;
joinClassSuccessCallBackData.classStatus= GlobalConfig.classStatus;
joinClassSuccessCallBackData.classStatus = GlobalConfig.classStatus;
joinClassSuccessCallBackData.classId = GlobalConfig.classId;
joinClassSuccessCallBackData.className = GlobalConfig.className;
joinClassSuccessCallBackData.h5Module = GlobalConfig.h5Module;
... ... @@ -1178,13 +1174,13 @@ export default class MessageEntrance extends Emiter {
joinClassSuccessCallBackData.province = GlobalConfig.province;//服务商
joinClassSuccessCallBackData.isp = GlobalConfig.isp;//服务商
joinClassSuccessCallBackData.classTimestamp=GlobalConfig.classTimestamp;//课堂进行的累积时间
joinClassSuccessCallBackData.recordTimestamp=GlobalConfig.recordTimestamp;//录制累积的总时间
joinClassSuccessCallBackData.recordPlaybackMaxTime=GlobalConfig.recordPlaybackMaxTime;//录制回放的总时间
joinClassSuccessCallBackData.classTimestamp = GlobalConfig.classTimestamp;//课堂进行的累积时间
joinClassSuccessCallBackData.recordTimestamp = GlobalConfig.recordTimestamp;//录制累积的总时间
joinClassSuccessCallBackData.recordPlaybackMaxTime = GlobalConfig.recordPlaybackMaxTime;//录制回放的总时间
joinClassSuccessCallBackData.fps=GlobalConfig.fps;
joinClassSuccessCallBackData.gop=GlobalConfig.gop;
joinClassSuccessCallBackData.videoQuality=GlobalConfig.videoQuality;
joinClassSuccessCallBackData.fps = GlobalConfig.fps;
joinClassSuccessCallBackData.gop = GlobalConfig.gop;
joinClassSuccessCallBackData.videoQuality = GlobalConfig.videoQuality;
loger.log(joinClassSuccessCallBackData);
//和加入课堂成功使用同样的消息处理
... ...
... ... @@ -14,20 +14,20 @@ const loger = Loger.getLoger('ServerCheck');
//ip选点流程的状态
let isRequestMcuCallback = false;//是否获取最佳mcu返回
let isRequestMsCallback = false;//是否获取ms最佳返回
let isTestFromSass=false;
let isTestFromServer=false;
let tempMcuIp="";
let tempMcuPort="";
let tempMsIp="";
let tempMsPort="";
let msDefaultPort="1935";
let mcuDefaultPort="7777";
let isTestFromSass = false;
let isTestFromServer = false;
let tempMcuIp = "";
let tempMcuPort = "";
let tempMsIp = "";
let tempMsPort = "";
let msDefaultPort = "1935";
let mcuDefaultPort = "7777";
let speedTestPort = ':5555';//测速端口统一
let checkMcuIpGroup =[];//储存MCU需要查询的ip数组
let checkMsIpGroup =[];//储存MCU需要查询的ip数组
const timeOutDelay=1000;//选点超时
let checkMcuIpGroup = [];//储存MCU需要查询的ip数组
let checkMsIpGroup = [];//储存MCU需要查询的ip数组
const timeOutDelay = 1000;//选点超时
class ServerCheck extends Emiter {
constructor() {
... ... @@ -40,25 +40,25 @@ class ServerCheck extends Emiter {
//重置ip选点流程状态
isRequestMcuCallback = false;
isRequestMsCallback = false;
isTestFromSass=false;
isTestFromServer=false;
checkMcuIpGroup =[];
checkMsIpGroup =[];
isTestFromSass = false;
isTestFromServer = false;
checkMcuIpGroup = [];
checkMsIpGroup = [];
let userIpInfo = new Object;
userIpInfo.ret = -1;
let ip = userIp;
let md5Str = MD5("addr=" + ip + "&token=b657c3507b324353e09c1958ee956a98efceb3e3");//("addr=" + ip + "&token=b657c3507b324353e09c1958ee956a98efceb3e3"),转成MD5
let md5Str = MD5("addr=" + ip + "&token=b657c3507b324353e09c1958ee956a98efceb3e3");
// /("addr=" + ip + "&token=b657c3507b324353e09c1958ee956a98efceb3e3"),转成MD5
let timestamp = new Date().getTime();
let location = `http://ipapi.ipip.net/find?addr=${ip}&sid=14&uid=5237&sig=${md5Str}&_=${timestamp}`;
// loger.log('获取IP信息 ', userIp, location);
fetchJsonp(location, {
timeout: timeOutDelay,
}).then(function (response) {
return response.json()
}).then(function (json) {
// loger.log('获取IP信息返回', json)
// loger.log('获取IP信息返回', json)
if (json) {
userIpInfo.ret = json.ret;
userIpInfo.country = json.data[0];//国家
... ... @@ -68,38 +68,38 @@ class ServerCheck extends Emiter {
}
this.serverGetUserIpInfoCallback(userIpInfo);
}.bind(this)).catch(function (ex) {
// loger.log('获取IP信息失败', ex.message)
// loger.log('获取IP信息失败', ex.message)
this.serverGetUserIpInfoCallback(userIpInfo);
}.bind(this));
}
//获取ip信息返回
serverGetUserIpInfoCallback(userIpInfo) {
// loger.log("获取IP详情,开始处理", userIpInfo);
// loger.log("获取IP详情,开始处理", userIpInfo);
if (userIpInfo.ret == "ok") {
GlobalConfig.country = userIpInfo.country;//国家
GlobalConfig.city = userIpInfo.city;//城市
GlobalConfig.province = userIpInfo.province;//服务商
GlobalConfig.isp = userIpInfo.isp;//服务商
// loger.log("获取ip详情成功,country:" + GlobalConfig.country + ",city:" + GlobalConfig.city + ",isp:" + GlobalConfig.isp);
// loger.log("获取ip详情成功,country:" + GlobalConfig.country + ",city:" + GlobalConfig.city + ",isp:" + GlobalConfig.isp);
this._chooseBestIpFromServer();
}
else {
// loger.log("获取ip详情失败");
// loger.log("获取ip详情失败");
this._chooseBestIpFromSassParam();
}
}
//从IPIP服务列表中选择最快的IP
_chooseBestIpFromServer() {
// loger.log("从Server服务列表中选择最快的IP");
isRequestMcuCallback=false;
isRequestMsCallback=false;
isTestFromServer=true;
isTestFromSass=false;
// loger.log("从Server服务列表中选择最快的IP");
isRequestMcuCallback = false;
isRequestMsCallback = false;
isTestFromServer = true;
isTestFromSass = false;
//country, province, ctiy, isp, jsona
checkMcuIpGroup =this._returnServerMCU(
checkMcuIpGroup = this._returnServerMCU(
GlobalConfig.country,
GlobalConfig.province,
GlobalConfig.city,
... ... @@ -113,34 +113,35 @@ class ServerCheck extends Emiter {
GlobalConfig.isp,
Server.serverList);
let mcuArr=[];
let msArr=[];
for(let i in checkMcuIpGroup){
if(checkMcuIpGroup[i]){
mcuArr.push(checkMcuIpGroup[i].ip+speedTestPort);
let mcuArr = [];
let msArr = [];
for (let i in checkMcuIpGroup) {
if (checkMcuIpGroup[i]) {
mcuArr.push(checkMcuIpGroup[i].ip + speedTestPort);
}
}
for(let k in checkMsIpGroup){
if(checkMsIpGroup[k]){
msArr.push(checkMsIpGroup[k].ip+speedTestPort);
for (let k in checkMsIpGroup) {
if (checkMsIpGroup[k]) {
msArr.push(checkMsIpGroup[k].ip + speedTestPort);
}
}
this.getBestMcuServer(mcuArr);
this.getBestMsServer(msArr);
}
//从Sass返回的msList mcuList中选点
_chooseBestIpFromSassParam() {
// loger.log("从Sass服务列表中选择最快的IP");
// loger.log("从Sass服务列表中选择最快的IP");
isRequestMcuCallback = false;
isRequestMsCallback = false;
isTestFromSass=false;
isTestFromServer=false;
checkMcuIpGroup =GlobalConfig.mcuList;
checkMsIpGroup =GlobalConfig.msList;
isTestFromSass = false;
isTestFromServer = false;
checkMcuIpGroup = GlobalConfig.mcuList;
checkMsIpGroup = GlobalConfig.msList;
//MCU
let mcuIpGroup = [];
for (let i = 0; i < checkMcuIpGroup.length; i++) {
let ipPort = checkMcuIpGroup[i].ip+speedTestPort;
let ipPort = checkMcuIpGroup[i].ip + speedTestPort;
mcuIpGroup.push(ipPort)
}
this.getBestMcuServer(mcuIpGroup);
... ... @@ -148,7 +149,7 @@ class ServerCheck extends Emiter {
//MS
let msIpGroup = [];
for (let k = 0; k < checkMsIpGroup.length; k++) {
let ipPort = checkMsIpGroup[k].ip+speedTestPort;
let ipPort = checkMsIpGroup[k].ip + speedTestPort;
msIpGroup.push(ipPort)
}
this.getBestMsServer(msIpGroup);
... ... @@ -157,26 +158,26 @@ class ServerCheck extends Emiter {
//获取最快的MCU服务器地址,参数是一个ip数组
getBestMcuServer(_param) {
// loger.log('开始MCU选点 ', _param);
if(_param==null||_param.length<1){
this._getBestMcuServerCallbackHandler("")
// loger.log('开始MCU选点 ', _param);
if (_param == null || _param.length < 1) {
this._getBestMcuServerCallbackHandler("");
return;
}
iphunter(_param, function (fatest_ip_response) {
if (!fatest_ip_response) {
loger.warn('getBestMcuServer -> nothing!');
this._getBestMcuServerCallbackHandler("")
this._getBestMcuServerCallbackHandler("");
} else {
loger.log('getBestMcuServer done -> ', fatest_ip_response);
this._getBestMcuServerCallbackHandler(fatest_ip_response)
this._getBestMcuServerCallbackHandler(fatest_ip_response);
}
}.bind(this), timeOutDelay);
}
//获取最快的MS服务器地址,参数是一个ip数组
getBestMsServer(_param) {
// loger.log('开始MS选点 ', _param);
if(_param==null||_param.length<1){
// loger.log('开始MS选点 ', _param);
if (_param == null || _param.length < 1) {
this._getBestMsServerCallbackHandler("")
return;
}
... ... @@ -192,50 +193,50 @@ class ServerCheck extends Emiter {
}
_getBestMcuServerCallbackHandler(_data) {
// loger.log("MCU选点返回1", _data);
// loger.log("MCU选点返回1", _data);
if (isRequestMcuCallback) {
// loger.log("MCU选点,已经有返回");
// loger.log("MCU选点,已经有返回");
return;
}
isRequestMcuCallback = true;
if (_data) {
let server = _data.split(":");
if (server[0]) {
tempMcuIp= server[0];
tempMcuIp = server[0];
}
tempMcuPort=mcuDefaultPort;
for(let i=0;i<checkMcuIpGroup.length;i++){
if(tempMcuIp==checkMcuIpGroup[i].ip){
tempMcuPort=checkMcuIpGroup[i].port||mcuDefaultPort;
tempMcuPort = mcuDefaultPort;
for (let i = 0; i < checkMcuIpGroup.length; i++) {
if (tempMcuIp == checkMcuIpGroup[i].ip) {
tempMcuPort = checkMcuIpGroup[i].port || mcuDefaultPort;
break;
}
}
}
// loger.log("MCU选点返回2",tempMcuIp,tempMcuPort);
// loger.log("MCU选点返回2",tempMcuIp,tempMcuPort);
this._startConnectMcu();
}
_getBestMsServerCallbackHandler(_data) {
// loger.log("MS选点返回1", _data);
// loger.log("MS选点返回1", _data);
if (isRequestMsCallback) {
// loger.log("_getBestMsServerCallbackHandler,已经有返回");
// loger.log("_getBestMsServerCallbackHandler,已经有返回");
return;
}
isRequestMsCallback = true;
if (_data) {
let server = _data.split(":");
if (server[0]) {
tempMsIp= server[0];
tempMsIp = server[0];
}
tempMsPort=msDefaultPort;
for(let i=0;i<checkMsIpGroup.length;i++){
if(tempMsIp==checkMsIpGroup[i].ip){
tempMsPort=checkMsIpGroup[i].port||msDefaultPort;
tempMsPort = msDefaultPort;
for (let i = 0; i < checkMsIpGroup.length; i++) {
if (tempMsIp == checkMsIpGroup[i].ip) {
tempMsPort = checkMsIpGroup[i].port || msDefaultPort;
break;
}
}
}
// loger.log("MS选点返回2", tempMsIp,tempMsPort);
// loger.log("MS选点返回2", tempMsIp,tempMsPort);
this._startConnectMcu();
}
... ... @@ -244,27 +245,27 @@ class ServerCheck extends Emiter {
if (isRequestMcuCallback && isRequestMsCallback) {
if (isTestFromServer && !isTestFromSass) {
//从Server服务列表中选点结束,如果没有选到合适的,从Sass的列表中获取
if(!tempMcuIp||!tempMsIp){
if (!tempMcuIp || !tempMsIp) {
this._chooseBestIpFromSassParam();
}else {
GlobalConfig.MCUServerIP=tempMcuIp;
GlobalConfig.MCUServerPort=tempMcuPort;
GlobalConfig.MSServerIP=tempMsIp;
GlobalConfig.MSServerPort=tempMsPort;
// loger.log("Server选点完成", "mcu-->",GlobalConfig.MCUServerIP,GlobalConfig.MCUServerPort,"ms---->",GlobalConfig.MSServerIP,GlobalConfig.MSServerPort);
} else {
GlobalConfig.MCUServerIP = tempMcuIp;
GlobalConfig.MCUServerPort = tempMcuPort;
GlobalConfig.MSServerIP = tempMsIp;
GlobalConfig.MSServerPort = tempMsPort;
// loger.log("Server选点完成", "mcu-->",GlobalConfig.MCUServerIP,GlobalConfig.MCUServerPort,"ms---->",GlobalConfig.MSServerIP,GlobalConfig.MSServerPort);
this._emit(ServerCheck.SEVER_CHECK_BEST_IP_SUCCESS);
}
} else {
//从Sass返回的服务列表中选点结束
if(tempMcuIp){
GlobalConfig.MCUServerIP=tempMcuIp;
GlobalConfig.MCUServerPort=tempMcuPort;
if (tempMcuIp) {
GlobalConfig.MCUServerIP = tempMcuIp;
GlobalConfig.MCUServerPort = tempMcuPort;
}
if(tempMsIp){
GlobalConfig.MSServerIP=tempMsIp;
GlobalConfig.MSServerPort=tempMsPort;
if (tempMsIp) {
GlobalConfig.MSServerIP = tempMsIp;
GlobalConfig.MSServerPort = tempMsPort;
}
loger.log("Sass选点完成", "mcu-->",GlobalConfig.MCUServerIP,GlobalConfig.MCUServerPort,"ms---->",GlobalConfig.MSServerIP,GlobalConfig.MSServerPort);
loger.log("Sass选点完成", "mcu-->", GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort, "ms---->", GlobalConfig.MSServerIP, GlobalConfig.MSServerPort);
this._emit(ServerCheck.SEVER_CHECK_BEST_IP_SUCCESS);
}
} else {
... ... @@ -274,44 +275,44 @@ class ServerCheck extends Emiter {
//检测MCU连接地址
_returnServerMCU(country, province, ctiy, isp, jsona) {
let countryData=jsona.MCU[country];
let countryData = jsona.MCU[country];
//按country没有查找到就返回default
if(!countryData){
countryData=jsona.MCU.default;
// loger.log("_returnServerMCU->countryData->default",countryData);
if (!countryData) {
countryData = jsona.MCU.default;
// loger.log("_returnServerMCU->countryData->default",countryData);
return countryData;
}
if(country!="中国"){
// loger.log("_returnServerMCU->countryData",countryData);
if (country != "中国") {
// loger.log("_returnServerMCU->countryData",countryData);
return countryData;
}
//中国的需要细分
//按isp查找
let ispData=countryData.isp[isp];
let ispData = countryData.isp[isp];
//isp查找到就返回
if(ispData){
// loger.log("_returnServerMCU->ispData",ispData);
if (ispData) {
// loger.log("_returnServerMCU->ispData",ispData);
return ispData;
}
//isp没查找到,用province
let provinceData=countryData.province[province];
let provinceData = countryData.province[province];
//用province查找到就返回
if(provinceData){
// loger.log("_returnServerMCU->provinceData",provinceData);
if (provinceData) {
// loger.log("_returnServerMCU->provinceData",provinceData);
return provinceData;
}
//isp province都没有,使用default
let defaultData=countryData.default
if(defaultData){
// loger.log("_returnServerMCU->defaultData",defaultData);
let defaultData = countryData.default
if (defaultData) {
// loger.log("_returnServerMCU->defaultData",defaultData);
return defaultData;
}else {
// loger.log("_returnServerMCU->defaultData","");
} else {
// loger.log("_returnServerMCU->defaultData","");
return [];
}
return [];
... ... @@ -320,44 +321,44 @@ class ServerCheck extends Emiter {
//检测MS连接地址
//Config.ipInfo
_returnServerMS(country, province, ctiy, isp, jsona) {
let countryData=jsona.MS[country];
let countryData = jsona.MS[country];
//按country没有查找到就返回default
if(!countryData){
countryData=jsona.MS.default;
// loger.log("_returnServerMS->countryData->default",countryData);
if (!countryData) {
countryData = jsona.MS.default;
// loger.log("_returnServerMS->countryData->default",countryData);
return countryData;
}
if(country!="中国"){
// loger.log("_returnServerMS->countryData",countryData);
if (country != "中国") {
// loger.log("_returnServerMS->countryData",countryData);
return countryData;
}
//中国的需要细分
//按isp查找
let ispData=countryData.isp[isp];
let ispData = countryData.isp[isp];
//isp查找到就返回
if(ispData){
// loger.log("_returnServerMS->ispData",ispData);
if (ispData) {
// loger.log("_returnServerMS->ispData",ispData);
return ispData;
}
//isp没查找到,用province
let provinceData=countryData.province[province];
let provinceData = countryData.province[province];
//用province查找到就返回
if(provinceData){
// loger.log("_returnServerMS->provinceData",provinceData);
if (provinceData) {
// loger.log("_returnServerMS->provinceData",provinceData);
return provinceData;
}
//isp province都没有,使用default
let defaultData=countryData.default
if(defaultData){
// loger.log("_returnServerMS->defaultData",defaultData);
let defaultData = countryData.default
if (defaultData) {
// loger.log("_returnServerMS->defaultData",defaultData);
return defaultData;
}else {
// loger.log("_returnServerMS->defaultData","");
} else {
// loger.log("_returnServerMS->defaultData","");
return [];
}
... ...