李勇

1.增加加入课堂的关键步骤输出;2.日志文件名增加角色身份和设备类型-> [身份]+设备+userId+nodeId.txt

... ... @@ -58,7 +58,7 @@ export default class MessageEntrance extends Emiter {
constructor() {
super();
//sdk 信息
GlobalConfig.sdkVersion = "v1.75.0.20170815";
GlobalConfig.sdkVersion = "v1.76.2.20170818";
loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
//设置
... ... @@ -496,8 +496,8 @@ export default class MessageEntrance extends Emiter {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_PARAM);
return;
}
loger.warn('=====================STEP1=======================');
loger.log('初始化课堂->', _param);
//保存参数
GlobalConfig.isRecordPlayBack = false; //设置为非录制回放状态
GlobalConfig.classId = parseInt(_param.classId);
... ... @@ -511,7 +511,7 @@ export default class MessageEntrance extends Emiter {
//H5处理
GlobalConfig.isH5 = _param.isH5 || false;//外部传入的参数,是否是H5
if (GlobalConfig.isH5 == true) {
GlobalConfig.platform = "H5";
GlobalConfig.platform = "h5";
GlobalConfig.deviceType = 3//3是H5
loger.warn("设备类型是H5");
}
... ... @@ -633,6 +633,7 @@ export default class MessageEntrance extends Emiter {
//加载本地Server.json文件,UserIp获取ip信息,选点
loadServerJsonAndgetUserIpInfo() {
let _this = this;
loger.warn('=====================STEP6=======================');
if (_ipManager) {
//先加载本地Server.json文件,然后获取userIp新
_ipManager.loadServerJosn(function (_callbackData) {
... ... @@ -682,6 +683,7 @@ export default class MessageEntrance extends Emiter {
_startFirstTestBestServer() {
//加入课堂之前开始第一次选点
let _this = this;
loger.warn('=====================STEP7=======================');
//推流地址测速
this._getFastestIpFromServer(GlobalConfig.msListFinal,
function (_data) {
... ... @@ -979,6 +981,7 @@ export default class MessageEntrance extends Emiter {
//Sass校验流程结束之后,开始加入MCU
_joinMCU() {
loger.warn('=====================STEP8=======================');
loger.log('加入课堂->.');
loger.warn("最终使用课堂服务信息->");
loger.warn('MCU服务器地址->mcu->', GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort);
... ... @@ -1017,6 +1020,7 @@ export default class MessageEntrance extends Emiter {
// MCU 课堂成功
_mcuJoinMCUClassSuccessHandler(_data) {
//loger.log('MCU 课堂成功.');
loger.warn('=====================STEP9=======================');
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
GlobalConfig.classJoinSuccess = true;
... ... @@ -1090,9 +1094,10 @@ export default class MessageEntrance extends Emiter {
LogManager.classId = GlobalConfig.classId;//课堂号
LogManager.userId = GlobalConfig.userId;//userId
LogManager.nodeId = GlobalConfig.nodeId;//nodeId
LogManager.userRole = GlobalConfig.userRole;//userRole
LogManager.userName = GlobalConfig.userName;//用户名称
LogManager.logUrl = GlobalConfig.logUrl;//日志服务器地址 //http://log.3mang.com
LogManager.platform=GlobalConfig.platform;
loger.log('加入课堂成功->');
loger.log(joinClassSuccessCallBackData);
... ... @@ -1595,30 +1600,6 @@ export default class MessageEntrance extends Emiter {
} catch (err) {
loger.error("从SASS获取的SERVER数据解析失败", err.message);
}
/*
if (_data.msList2) {
GlobalConfig.setMsList(_data.msList2.msList); //储存Sass ms拉流地址
GlobalConfig.setRtmpPullList(_data.msList2.rtmpPullArray); //储存Sass ms拉流地址
GlobalConfig.setHlsPullList(_data.msList2.hlsPullArray); //储存Sass ms拉流地址
GlobalConfig.setRsList(_data.msList2.rsList); //储存Sass 录制回放hls拉流地址
}
//Sass mcu
GlobalConfig.setMcuList(_data.mcuList); //mcu
loger.warn('从Sass获取的推流拉流列表数据:');
loger.warn('Sass->msList->', GlobalConfig.msList);
loger.warn('Sass->rtmpPullList->', GlobalConfig.rtmpPullList);
loger.warn('Sass->hlsPullList->', GlobalConfig.hlsPullList);
loger.warn('Sass->rsList->', GlobalConfig.rsList);
//没有加载server.json之前,最终的服务列表按Sass的为准,server.json加载完成后会选点
GlobalConfig.msListFinal=GlobalConfig.msList;
GlobalConfig.rtmpPullListFinal=GlobalConfig.rtmpPullList;
GlobalConfig.hlsListFinal=GlobalConfig.hlsPullList;
GlobalConfig.rsListFinal=GlobalConfig.rsList;
GlobalConfig.mcuListFinal=GlobalConfig.mcuList;*/
}
//课堂获取Sass数据完成
... ...
... ... @@ -129,12 +129,13 @@ class LogManager {
//console.log("上报的日志->", tempArr, msgData);
//需要过滤掉&字符,否则Sass无法取数据
msgData=msgData.replace(/&/g,"#");
const userRoleAndUserId="["+this.userRole+"]_"+this.platform+"__"+this.userId;//身份+userId
fetch(encodeURI(this.logUrl), {
method: 'POST',
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
},
body: `classId=${this.classId}&userId=${this.userId}&nodeId=${this.nodeId}&type=${msgType}&data=${msgData}`,
body: `classId=${this.classId}&userId=${userRoleAndUserId}&nodeId=${this.nodeId}&type=${msgType}&data=${msgData}`,
timeout: 3000
})
.then(ret => {
... ... @@ -187,8 +188,9 @@ LogManager.classId = 0;//课堂号
LogManager.userId = "";//userId
LogManager.nodeId = 0;//nodeId
LogManager.userName = "";//用户名称
LogManager.userRole = "normal";//用户名称
LogManager.logUrl = "";//日志服务器地址 //http://log.3mang.com:8888
LogManager.platform="unknow";
LogManager.ERROR = 1;
LogManager.WARN = 2;
LogManager.LOG = 3;
... ...
... ... @@ -42,7 +42,6 @@ class Sass extends Emiter {
let url = `${GlobalConfig.locationProtocol+_initInfo.portal}/3m/api/meeting/joinParams.do?meetingNumber=${_initInfo.classId}&userID=${_initInfo.userId}`;
loger.log('1.初始化init获取课堂校验信息.');
loger.log(url);
loger.log(_initInfo);
fetch(url, {
timeout: 5000
})
... ... @@ -88,6 +87,7 @@ class Sass extends Emiter {
// Sass校验开始-->密码校验(如果需要密码)--->MD5校验----------------------------------------------------
passwordAndMd5Checking(_param) {
loger.log('=====================STEP2=======================');
loger.log('2.开始Sass校验');
loger.log(_param);
confInfo = _param;
... ... @@ -121,6 +121,7 @@ class Sass extends Emiter {
//let url = `http://${confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`;
let url = `${GlobalConfig.locationProtocol+confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`;
loger.log('=====================STEP3=======================');
loger.log('3.课堂密码校验', url);
fetch(url, {
timeout: 5000
... ... @@ -160,6 +161,7 @@ class Sass extends Emiter {
// let url = `http://${confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`;
let url = `${GlobalConfig.locationProtocol+confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`;
loger.log('=====================STEP4=======================');
loger.log('4.MD5校验', url);
fetch(url, {
timeout: 5000
... ... @@ -246,6 +248,7 @@ class Sass extends Emiter {
//let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('=====================STEP5=======================');
loger.log('5.获取课堂课堂的完整信息 ');
loger.log(url);
fetch(url, {
... ...
... ... @@ -16,18 +16,19 @@ class SystemConfig {
GlobalConfig.isMobile = mdetect.isMobileUA();
if (GlobalConfig.isMobile) {
loger.warn("当前设备是移动设备");
GlobalConfig.platform = 3;//移动设备,不是ios和安卓就当H5处理
GlobalConfig.platform = "h5";//移动设备,不是ios和安卓就当H5处理
GlobalConfig.deviceType = 3;
} else {
loger.warn("当前设备是PC");
GlobalConfig.platform = 0
GlobalConfig.platform = "pc";
GlobalConfig.deviceType = 0;
}
if (mdetect.isIOS()) {
GlobalConfig.platform = "ios";
GlobalConfig.deviceType = 1; //"ios";
}
if (mdetect.isAndroid()) {
GlobalConfig.platform = 2; //"android";
GlobalConfig.platform = "android"; //"android";
GlobalConfig.deviceType = 2; //"ios";
}
... ...