李勇

1.统一储存从Sass获取的会议信息;

... ... @@ -70,7 +70,7 @@ export default class MessageEntrance extends Emiter {
// 底层MCU消息层
_mcu = Mcu;
_mcu.on('*', (type, data) => this._emit(type, data));
_mcu.on(MessageTypes.CLASS_JOIN_SUCCESS, this._joinClassSuccessHandler.bind(this));//加入MCU会议完成
_mcu.on(MessageTypes.CLASS_JOIN_SUCCESS, this._mcuJoinClassSuccessHandler.bind(this));//加入MCU会议完成
// 注册所有应用Ape
... ... @@ -97,7 +97,6 @@ export default class MessageEntrance extends Emiter {
_whiteboard_ape.on('*', (type, data) => this._emit(type, data));
//_whiteboard_ape.on(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this));
_doc_ape = new DocApe();
_doc_ape.on('*', (type, data) => this._emit(type, data));
_doc_ape.on(MessageTypes.DOC_UPDATE, this.docUpdateHandler.bind(this));
... ... @@ -187,6 +186,7 @@ export default class MessageEntrance extends Emiter {
_onClassStatusInfoChange(_param) {
this._sassSaveClassStatusInfo();
}
//有人员离开
_onClassDeleteRoster(_data){
//{"nodeId":nodeId}
... ... @@ -239,12 +239,14 @@ export default class MessageEntrance extends Emiter {
return;
}
loger.log('init', _param);
//保存参数
GlobalConfig.classId = parseInt(_param.classId);
GlobalConfig.portal = _param.portal;
GlobalConfig.userRole = _param.userRole || ApeConsts.normal;
GlobalConfig.userId = _param.userId || "0";
GlobalConfig.userName=_param.userName || "";
//获取课堂校验信息
if (_sass) {
_sass.getJoinParams(GlobalConfig.getClassInfo());
... ... @@ -344,6 +346,8 @@ export default class MessageEntrance extends Emiter {
"maxAudioChannels": 1,
"h5_mcu_list": "123.56.73.119:7001;123.56.69.230:7001;112.126.80.182:7001"
}*/
/*
if (_data.h5_mcu_list) {
//MCU地址默认使用第一个
let server = _data.h5_mcu_list.split(";")[0];
... ... @@ -376,8 +380,8 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.rs = _data.rs;
GlobalConfig.maxVideoChannels = _data.maxVideoChannels;
GlobalConfig.maxAudioChannels = _data.maxAudioChannels;
GlobalConfig.maxMediaChannels = _data.maxVideoChannels + _data.maxAudioChannels;
*/
/*
... ... @@ -436,8 +440,15 @@ export default class MessageEntrance extends Emiter {
// console.log(_data);
//包含整个会议最全的信息,储存数据
if (_data) {
GlobalConfig.className = _data.meetingName || "";
GlobalConfig.classBeginTime = _data.beginTime || "";
GlobalConfig.classEndTime = _data.endTime || "";
GlobalConfig.maxVideoChannels = _data.maxVideoChannels;
GlobalConfig.maxAudioChannels = _data.maxAudioChannels;
GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表
GlobalConfig.setDocRecordList(_data.docRecordList);//录制回放地址??
GlobalConfig.setRecordList(_data.recordList);//录制回放地址
GlobalConfig.setDocList(_data.docList);//文档地址
GlobalConfig.setMsList(_data.msList);//推流播流服务器地址
GlobalConfig.setRsList(_data.rsList);//播放m3u8格式的地址
... ... @@ -446,22 +457,45 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.setMusicListPrepare(_data.musicListPrepare);//提前上传的声音文件列表
if (_data.mcuList) {
//MCU地址默认使用第一个
GlobalConfig.MCUServerIP =_data.mcuList[0].ip||"";
GlobalConfig.MCUServerPort =_data.mcuList[0].port||"";
}
//视频推流播流地址
if (_data.msList) {
//MS地址默认使用第一个
GlobalConfig.MSServerIP =_data.msList[0].ip||"";
GlobalConfig.MSServerPort =_data.msList[0].port||"";
}
//m3u8播流地址
if(_data.rsList){
//RS地址默认使用第一个
GlobalConfig.RSServerIP =_data.rsList[0].ip||"";
GlobalConfig.RSServerPort =_data.rsList[0].port||"";
}
//文档地址
if(_data.docList){
//doc地址默认使用第一个
GlobalConfig.DOCServerIP =_data.docList[0].ip||"";
GlobalConfig.DOCServerPort =_data.docList[0].port||"";
}
//record
if(_data.recordList){
//地址默认使用第一个
GlobalConfig.RecordServerIP =_data.recordList[0].ip||"";
GlobalConfig.RecordServerPort =_data.recordList[0].port||"";
}
}
if (_data.currentInfo) {
//根据从Sass获取的数据信息,同步最后一次保存的会议状态信息
loger.log("同步最后一次保存过的会议状态信息");
/*//解析BASE64的数据
loger.log("11111111111111111111111111111111");
console.log(GlobalConfig.classStatusInfo);
//已经保存过会议状态信息,读取之前的数据
let _classStatusInfo=EngineUtils.objectFromBase64(_data.currentInfo);
loger.log("classStatusInfo",_classStatusInfo);
GlobalConfig.classStatusInfo=_classStatusInfo;
loger.log("2222222222222222222222222");
console.log(GlobalConfig.classStatusInfo);*/
//console.log(_data.currentInfo);
GlobalConfig.setClassStatusInfo(_data.currentInfo);
console.log(GlobalConfig.classStatusInfo)
} else {
... ... @@ -475,11 +509,6 @@ export default class MessageEntrance extends Emiter {
//保存会议状态信息
_sassSaveClassStatusInfo() {
if (GlobalConfig.isHost) {
//用get保存数据,数据内容需要转为BASE64
//let _classStatusInfo=EngineUtils.objectToBase64(GlobalConfig.classStatusInfo);
//loger.log("保存会议状态信息",_classStatusInfo);
//_sass.saveClassStatusInfo({"classStatusInfo":_classStatusInfo});//保存会议状态信息
//只有加入会议之后才能保存数据
if (GlobalConfig.getCurrentStatus().code == GlobalConfig.statusCode_2.code) {
//POST 保存数据
... ... @@ -506,7 +535,7 @@ export default class MessageEntrance extends Emiter {
}
// MCU 会议成功
_joinClassSuccessHandler(_data) {
_mcuJoinClassSuccessHandler(_data) {
loger.log('MCU 会议成功.');
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
... ... @@ -515,17 +544,15 @@ export default class MessageEntrance extends Emiter {
//返回给客户端初始化成功的数据
let initSuccessCallBackData = {};
//GlobalConfig.MCUServerIP=_data.MCUServerIP;
// GlobalConfig.MCUServerPort=_data.MCUServerPort;
initSuccessCallBackData.DOCServerIP =GlobalConfig.DOCServerIP;
initSuccessCallBackData.DOCServerPort =GlobalConfig.DOCServerPort;
initSuccessCallBackData.docServer = GlobalConfig.docServer;//文档服务器地址
initSuccessCallBackData.classId = GlobalConfig.classId;
initSuccessCallBackData.className = GlobalConfig.className;
initSuccessCallBackData.h5Module = GlobalConfig.h5Module;
initSuccessCallBackData.isHost = GlobalConfig.isHost;
initSuccessCallBackData.maxAudioChannels = GlobalConfig.maxAudioChannels;
initSuccessCallBackData.maxVideoChannels = GlobalConfig.maxVideoChannels;
initSuccessCallBackData.maxMediaChannels = GlobalConfig.maxMediaChannels;
initSuccessCallBackData.mcuDelay = GlobalConfig.mcuDelay;
initSuccessCallBackData.msType = GlobalConfig.msType;
... ... @@ -551,79 +578,6 @@ export default class MessageEntrance extends Emiter {
loger.log('加入会议成功', initSuccessCallBackData);
_joinClassSuccessCallBackFun(initSuccessCallBackData);
}
//loger.log('MCU 会议成功.');
//GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
//if(_sass){
// _sass.getClassDetail();//会议信息
// _sass.getClassParam();//会议参数大全
//}
//
////储存数据
//GlobalConfig.MCUServerIP=_data.MCUServerIP;
//GlobalConfig.MCUServerPort=_data.MCUServerPort;
//GlobalConfig.classId=_data.classId;
//GlobalConfig.h5Module=_data.h5Module;
//GlobalConfig.maxAudioChannels=_data.maxAudioChannels;
//GlobalConfig.maxVideoChannels=_data.maxVideoChannels;
//GlobalConfig.maxMediaChannels=_data.maxMediaChannels;
//GlobalConfig.mcuClassInfo=_data.mcuClassInfo;
//GlobalConfig.mcuDelay=_data.mcuDelay;
//GlobalConfig.md5=_data.md5;
//GlobalConfig.msType=_data.msType;
//GlobalConfig.nodeId=_data.nodeId;
//GlobalConfig.password=_data.password;
//GlobalConfig.portal=_data.portal;
//GlobalConfig.role=_data.role;
//GlobalConfig.siteId=_data.siteId;
//GlobalConfig.topNodeID=_data.topNodeID;
//GlobalConfig.userId=_data.userId;
//GlobalConfig.userName=_data.userName;
//GlobalConfig.userRole=_data.userRole;
//GlobalConfig.userType=_data.userType;
//
////返回给客户数据
//if(_joinClassSuccessCallBackFun){
// //返回给客户端初始化成功的数据
// let initSuccessCallBackData={};
//
// //GlobalConfig.MCUServerIP=_data.MCUServerIP;
// // GlobalConfig.MCUServerPort=_data.MCUServerPort;
//
// initSuccessCallBackData.docServer=GlobalConfig.docServer;//文档服务器地址
// initSuccessCallBackData.classId=GlobalConfig.classId;
// initSuccessCallBackData.className=GlobalConfig.className;
// initSuccessCallBackData.h5Module=GlobalConfig.h5Module;
// initSuccessCallBackData.isHost=GlobalConfig.isHost;
// initSuccessCallBackData.maxAudioChannels=GlobalConfig.maxAudioChannels;
// initSuccessCallBackData.maxVideoChannels=GlobalConfig.maxVideoChannels;
// initSuccessCallBackData.maxMediaChannels=GlobalConfig.maxMediaChannels;
// initSuccessCallBackData.mcuDelay=GlobalConfig.mcuDelay;
//
// initSuccessCallBackData.msType=GlobalConfig.msType;
// initSuccessCallBackData.nodeId=GlobalConfig.nodeId;
// initSuccessCallBackData.password=GlobalConfig.password;
// initSuccessCallBackData.passwordRequired=GlobalConfig.passwordRequired;// 老师的默认是true
// //GlobalConfig.passwordRequired 老师的默认是true
// //GlobalConfig.portal=_data.portal;
// initSuccessCallBackData.role=GlobalConfig.role;
// initSuccessCallBackData.siteId=GlobalConfig.siteId;
// initSuccessCallBackData.topNodeID=GlobalConfig.topNodeID;
// initSuccessCallBackData.userId=GlobalConfig.userId;
// initSuccessCallBackData.userName=GlobalConfig.userName;
// initSuccessCallBackData.userRole=GlobalConfig.userRole;
// initSuccessCallBackData.userType=GlobalConfig.userType;
//
// initSuccessCallBackData.siteId=GlobalConfig.siteId;
// initSuccessCallBackData.classId=GlobalConfig.classId;
// initSuccessCallBackData.userRole=GlobalConfig.userRole;
// initSuccessCallBackData.userId=GlobalConfig.userId;
// initSuccessCallBackData.passwordRequired=GlobalConfig.passwordRequired;
// initSuccessCallBackData.classType=GlobalConfig.classType||ApeConsts.CLASS_TYPE_INTERACT;
// loger.log('加入会议成功',initSuccessCallBackData);
// _joinClassSuccessCallBackFun(initSuccessCallBackData);
//}
}
//Sass删除文档数据
... ... @@ -887,30 +841,32 @@ export default class MessageEntrance extends Emiter {
if(GlobalConfig.isHost){
for (let value of GlobalConfig.docListPrepare){
if(value){
//{
// "MD5": "f3feb3fac8cd3a953bded00e07a0c66b",
// "absoluteLocation": "http://101.200.150.192/DocSharing/data/526661904/20170203-115400026/f3feb3fac8cd3a953bded00e07a0c66b.swf",
// "createUserID": "972",
// "createUserIP": "114.241.81.175",
// "createUserName": "base",
// "dynamicPPT": 0,
// "dynamicTransferStatic": "",
// "id": "8ab3b0ed5a00f2fa015a0219a3df016c",
// "meetingNumber": "",
// "name": "McuClient_v.1.0.1_API.pdf",
// "orderStr": "",
// "pdfSize": 5,
// "processEndTime": "2017-02-03 11:54:31",
// "processRate": 0,
// "processStartTime": "2017-02-03 11:54:27",
// "relativeLocation": "/DocSharing/data/526661904/20170203-115400026/f3feb3fac8cd3a953bded00e07a0c66b.swf",
// "siteID": "h5test",
// "size": 360920,
// "status": 3,
// "type": "pdf",
// "uploadEndTime": "2017-02-03 11:54:27",
// "uploadStartTime": "2017-02-03 11:54:27"
//}
/* //提前上传的文档文档信息的结构
{
"MD5": "f3feb3fac8cd3a953bded00e07a0c66b",
"absoluteLocation": "http://101.200.150.192/DocSharing/data/526661904/20170203-115400026/f3feb3fac8cd3a953bded00e07a0c66b.swf",
"createUserID": "972",
"createUserIP": "114.241.81.175",
"createUserName": "base",
"dynamicPPT": 0,
"dynamicTransferStatic": "",
"id": "8ab3b0ed5a00f2fa015a0219a3df016c",
"meetingNumber": "",
"name": "McuClient_v.1.0.1_API.pdf",
"orderStr": "",
"pdfSize": 5,
"processEndTime": "2017-02-03 11:54:31",
"processRate": 0,
"processStartTime": "2017-02-03 11:54:27",
"relativeLocation": "/DocSharing/data/526661904/20170203-115400026/f3feb3fac8cd3a953bded00e07a0c66b.swf",
"siteID": "h5test",
"size": 360920,
"status": 3,
"type": "pdf",
"uploadEndTime": "2017-02-03 11:54:27",
"uploadStartTime": "2017-02-03 11:54:27"
}*/
loger.log("判断是否需要把提前上传的文档上传到mcu",value);
let paramInfo={
"pageNum": value.pdfSize,
... ...
... ... @@ -57,7 +57,6 @@ class GlobalConfig {
classInfo.MCUServerPort=this.MCUServerPort;
classInfo.maxVideoChannels= this.maxVideoChannels;
classInfo.maxAudioChannels=this.maxAudioChannels;
classInfo.maxMediaChannels= this.maxMediaChannels;
return classInfo;
... ... @@ -177,13 +176,13 @@ class GlobalConfig {
static getDocListPrepare(){
return this.docListPrepare;
}
//储存文档录制列表
static setDocRecordList(_data){
//储存录制列表
static setRecordList(_data){
if(_data==null) return;
this.docRecordList=_data;
this.recordList=_data;
}
static getDocRecordList(){
return this.docRecordList;
static getRecordList(){
return this.recordList;
}
//文档服务器列表
... ... @@ -249,11 +248,12 @@ GlobalConfig.md5="";
GlobalConfig.msType=1;//目前固定用这个
GlobalConfig.mcuDelay=3000;//默认的延迟时间
GlobalConfig.docDelay=1600;//文档模块加入成功之后延迟发送送成功的消息给主模块
GlobalConfig.portal="112.126.80.182:80";
GlobalConfig.ip="112.126.80.182";
GlobalConfig.port="80";
GlobalConfig.portal="112.126.80.182:80";//Sass IP
//GlobalConfig.ip="112.126.80.182";
//GlobalConfig.port="80";
GlobalConfig.MCUServerIP="114.215.195.70";
GlobalConfig.docServer="";//当前的文档地址加载的服务器地址
GlobalConfig.MCUServerPort=9003;
GlobalConfig.MSServerIP = "";//推流 播流的地址
... ... @@ -263,9 +263,16 @@ GlobalConfig.MSServerPort ="";
GlobalConfig.RSServerIP ="";
GlobalConfig.RSServerPort ="";
//DOC
GlobalConfig.DOCServerIP ="";
GlobalConfig.DOCServerPort ="";
GlobalConfig.RecordServerIP ="";
GlobalConfig.RecordServerPort ="";
GlobalConfig.maxVideoChannels=0;
GlobalConfig.maxAudioChannels=0;
GlobalConfig.maxMediaChannels=0;
GlobalConfig.isDebug=false;
GlobalConfig.deBugData={};
... ... @@ -317,7 +324,7 @@ GlobalConfig.classAllParam={};//Sass直接返回的所有会议信息(最全)
GlobalConfig.classDetail={};//Sass直接返回的当前课堂基本信息
GlobalConfig.docListPrepare=[]; // 已经提前上传的文档,进入课堂后需要自动加载
GlobalConfig.docRecordList=[];//录制服务器地址集合
GlobalConfig.recordList=[];//录制服务器地址集合
GlobalConfig.docList=[];//文档服务器地址集合
GlobalConfig.mcuList=[];//录制服务器地址集合
GlobalConfig.msList=[];//ms服务器地址集合
... ... @@ -325,21 +332,5 @@ GlobalConfig.musicList=[];//music服务器地址集合
GlobalConfig.musicListPrepare=[];//提提前上传的music集合
GlobalConfig.rsList=[];
// client type
//点对点会议版本
GlobalConfig.CT_P2PMEETING = 0;
/**
* 直播教育版本和大型直播版本
*/
GlobalConfig.CT_LIVEEDUCATION = 1;
/**
* 录制播放器
*/
GlobalConfig.CT_RECORDPLAYER = 2;
/**
* 实时流版本
*/
GlobalConfig. CT_LIVESTREAMING = 3;
GlobalConfig.clientType =0;
export default GlobalConfig;
... ...
... ... @@ -85,8 +85,10 @@ ApeConsts.USER_CAMERA_OPEN = 0x0080; // 视频开启
//VIDEO MIC 流媒体消息操作控制类型
ApeConsts.MEDIA_ACTION_DEFAULT=0;
ApeConsts.MEDIA_ACTION_OPEN_CAMERA=1;// "open.camera";
ApeConsts.MEDIA_ACTION_CLOSE_CAMERA=2;// "close.camera";
ApeConsts.MEDIA_ACTION_OPEN_MIC= 3;//"open.mic";
ApeConsts.MEDIA_ACTION_CLOSE_MIC= 4;//"close.mic";
... ...
... ... @@ -145,7 +145,8 @@ class DocApe extends Ape {
return "";
}
let fullPath=GlobalConfig.docServer+_param.relativeUrl;
let port = (GlobalConfig.DOCServerPort == "" || GlobalConfig.DOCServerPort == null) ? "":":" + GlobalConfig.DOCServerPort;
let fullPath=GlobalConfig.DOCServerIP+port+_param.relativeUrl;
var index;
switch (_param.type){
case "jpg":
... ...