李勇

1.会议模块增加自动开始上课的功能

2.录制回放时聊天模块和白板模块在seek的时候,历史数据最多显示30条
此 diff 太大无法显示。
... ... @@ -296,10 +296,19 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.isRecordPlayBack=false;//设置为非录制回放状态
GlobalConfig.classId = parseInt(_param.classId);
GlobalConfig.portal = _param.portal;
GlobalConfig.userRole = _param.userRole || ApeConsts.normal;
GlobalConfig.userId = _param.userId || "0";
GlobalConfig.userName = _param.userName || "";
//设置角色身份
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;
}
//客户端决定是否延迟接收消息
GlobalConfig.messageDelay = _param.messageDelay || false;
... ... @@ -429,6 +438,9 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.gop = _data.gop||3;;
GlobalConfig.videoQuality = _data.videoQuality||2;
//是否自动开始(身份是host的时候才用到的)
GlobalConfig.isAutoStartClass= _data.autoRecord||0;
GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表
GlobalConfig.setRecordList(_data.recordList);//录制回放地址
GlobalConfig.setDocList(_data.docList);//文档地址
... ...
... ... @@ -310,6 +310,8 @@ GlobalConfig.recordFileName="";//录制的文件名,如 果为空就创建一个
GlobalConfig.recordDownloadUrl="";//下载地址
GlobalConfig.recordReplaytickValues={}; // 滚动条关键点,用于快进快退
GlobalConfig.isAutoStartClass=0;//是否自动开始上课 0-否 ;1 是
GlobalConfig.updateClassInfoDelay=30;//(秒),每隔30秒同步一次课堂状态的并保存到Sass
//GlobalConfig.serverTimestamp=0;//当前的系统时间戳 用get set 获取
... ...
... ... @@ -293,6 +293,8 @@ class RecordPlayBackParse extends Emiter {
position += byteLen;
this._parseSaveSocketMsgReceivedHandler(byteData, timestamp);
//记录最后一个数据的时间戳作为整个录制回放的总时间戳
this._recordPlaybackMaxTime = timestamp;
}
... ... @@ -300,6 +302,12 @@ class RecordPlayBackParse extends Emiter {
this._isReady = true;
this._stopTimerCounter();
//录制回放的总时间长度按课堂最长时间计算,不能按最后一个消息的时间计算
if(this._recordPlaybackMaxTime<GlobalConfig.classTimestamp){
this._recordPlaybackMaxTime=GlobalConfig.classTimestamp;
}
GlobalConfig.recordPlaybackMaxTime = this._recordPlaybackMaxTime;
loger.log("录制回放数据解析完成,录制回放的总时间长为->", this._recordPlaybackMaxTime);
//console.log("_messages", this._messages);
... ... @@ -382,13 +390,13 @@ class RecordPlayBackParse extends Emiter {
//查找关键帧,找到关键帧后再继续播放
this._searchApeMessageKeyfram(this._conferApeMssages, ApeConsts.CONFERENCE_SESSION_ID);
this._searchApeMessageKeyfram(this._docApeMssages, ApeConsts.DOCSHARING_SESSION_ID);
this._searchApeMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID);
//this._searchApeMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID);
this._searchApeMessageKeyfram(this._videoApeMssages, ApeConsts.VIDEO_SESSION_ID);
this._searchApeMessageKeyfram(this._audioApeMssages, ApeConsts.AUDIO_SESSION_ID);
//聊天模块的比较特殊,消息是累计的
this._searchChatApeMessageKeyfram(this._chatApeMssages, ApeConsts.CHAT_SESSION_ID);
//聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条
this._searchApeHistoryMessageKeyfram(this._chatApeMssages, ApeConsts.CHAT_SESSION_ID);
this._searchApeHistoryMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID);
//各个ape模块无论有没有找到关键帧数据,都继续播放
this._startTimerCounter();
... ... @@ -420,7 +428,9 @@ class RecordPlayBackParse extends Emiter {
}
//查找聊天模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示
_searchChatApeMessageKeyfram(_apeMessages) {
_searchApeHistoryMessageKeyfram(_apeMessages) {
//最多30条数据
let counter=0;
let messageItem;
let keyFrameSeek = 0;
for (let i = this._recordPlaybackTimestamp; i > 0; i--) {
... ... @@ -429,9 +439,15 @@ class RecordPlayBackParse extends Emiter {
//把时间点对应的数据发送,同一秒内有存在多个数据的情况
for (let i = 0; i < messageItem.length; i++) {
this._everSocketMsgReceivedHandler(messageItem[i].byteData, 0);
counter++;
if(counter>30){
loger.warn("SEEK->最多处理历史消息30条");
return;
}
}
}
}
}
}
... ...
... ... @@ -377,6 +377,13 @@ class ConferApe extends Ape {
//如果是host ,开始录制
this.startRecord();
}else if(GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_WAIT&&
GlobalConfig.isHost&& GlobalConfig.isAutoStartClass&&
!GlobalConfig.isRecordPlayBack){
//自动开始上课的4个条件
//1.如果自己是host,2.Sass配置的是自动开始上课,3.并且当前是未开始状态,4.当前不是录制回放,开始自动上课
loger.log('自动开始上课->classStatus:', GlobalConfig.classStatus, " isHost:",GlobalConfig.isHost, " isAutoStartClass:",GlobalConfig.isAutoStartClass, " isRecordPlayBack:",GlobalConfig.isRecordPlayBack);
this.startClass();
}
}
... ...