正在显示
5 个修改的文件
包含
43 行增加
和
6 行删除
此 diff 太大无法显示。
| @@ -296,10 +296,19 @@ export default class MessageEntrance extends Emiter { | @@ -296,10 +296,19 @@ export default class MessageEntrance extends Emiter { | ||
| 296 | GlobalConfig.isRecordPlayBack=false;//设置为非录制回放状态 | 296 | GlobalConfig.isRecordPlayBack=false;//设置为非录制回放状态 |
| 297 | GlobalConfig.classId = parseInt(_param.classId); | 297 | GlobalConfig.classId = parseInt(_param.classId); |
| 298 | GlobalConfig.portal = _param.portal; | 298 | GlobalConfig.portal = _param.portal; |
| 299 | - GlobalConfig.userRole = _param.userRole || ApeConsts.normal; | ||
| 300 | GlobalConfig.userId = _param.userId || "0"; | 299 | GlobalConfig.userId = _param.userId || "0"; |
| 301 | GlobalConfig.userName = _param.userName || ""; | 300 | GlobalConfig.userName = _param.userName || ""; |
| 302 | 301 | ||
| 302 | + //设置角色身份 | ||
| 303 | + GlobalConfig.userRole = _param.userRole || ApeConsts.normal; | ||
| 304 | + if(GlobalConfig.userRole!=ApeConsts.host&& | ||
| 305 | + GlobalConfig.userRole!=ApeConsts.presenter&& | ||
| 306 | + GlobalConfig.userRole!=ApeConsts.assistant&& | ||
| 307 | + GlobalConfig.userRole!=ApeConsts.record&& | ||
| 308 | + GlobalConfig.userRole!=ApeConsts.invisible){ | ||
| 309 | + GlobalConfig.userRole= ApeConsts.normal; | ||
| 310 | + } | ||
| 311 | + | ||
| 303 | //客户端决定是否延迟接收消息 | 312 | //客户端决定是否延迟接收消息 |
| 304 | GlobalConfig.messageDelay = _param.messageDelay || false; | 313 | GlobalConfig.messageDelay = _param.messageDelay || false; |
| 305 | 314 | ||
| @@ -429,6 +438,9 @@ export default class MessageEntrance extends Emiter { | @@ -429,6 +438,9 @@ export default class MessageEntrance extends Emiter { | ||
| 429 | GlobalConfig.gop = _data.gop||3;; | 438 | GlobalConfig.gop = _data.gop||3;; |
| 430 | GlobalConfig.videoQuality = _data.videoQuality||2; | 439 | GlobalConfig.videoQuality = _data.videoQuality||2; |
| 431 | 440 | ||
| 441 | + //是否自动开始(身份是host的时候才用到的) | ||
| 442 | + GlobalConfig.isAutoStartClass= _data.autoRecord||0; | ||
| 443 | + | ||
| 432 | GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表 | 444 | GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表 |
| 433 | GlobalConfig.setRecordList(_data.recordList);//录制回放地址 | 445 | GlobalConfig.setRecordList(_data.recordList);//录制回放地址 |
| 434 | GlobalConfig.setDocList(_data.docList);//文档地址 | 446 | GlobalConfig.setDocList(_data.docList);//文档地址 |
| @@ -310,6 +310,8 @@ GlobalConfig.recordFileName="";//录制的文件名,如 果为空就创建一个 | @@ -310,6 +310,8 @@ GlobalConfig.recordFileName="";//录制的文件名,如 果为空就创建一个 | ||
| 310 | GlobalConfig.recordDownloadUrl="";//下载地址 | 310 | GlobalConfig.recordDownloadUrl="";//下载地址 |
| 311 | GlobalConfig.recordReplaytickValues={}; // 滚动条关键点,用于快进快退 | 311 | GlobalConfig.recordReplaytickValues={}; // 滚动条关键点,用于快进快退 |
| 312 | 312 | ||
| 313 | +GlobalConfig.isAutoStartClass=0;//是否自动开始上课 0-否 ;1 是 | ||
| 314 | + | ||
| 313 | GlobalConfig.updateClassInfoDelay=30;//(秒),每隔30秒同步一次课堂状态的并保存到Sass | 315 | GlobalConfig.updateClassInfoDelay=30;//(秒),每隔30秒同步一次课堂状态的并保存到Sass |
| 314 | //GlobalConfig.serverTimestamp=0;//当前的系统时间戳 用get set 获取 | 316 | //GlobalConfig.serverTimestamp=0;//当前的系统时间戳 用get set 获取 |
| 315 | 317 |
| @@ -293,6 +293,8 @@ class RecordPlayBackParse extends Emiter { | @@ -293,6 +293,8 @@ class RecordPlayBackParse extends Emiter { | ||
| 293 | position += byteLen; | 293 | position += byteLen; |
| 294 | 294 | ||
| 295 | this._parseSaveSocketMsgReceivedHandler(byteData, timestamp); | 295 | this._parseSaveSocketMsgReceivedHandler(byteData, timestamp); |
| 296 | + | ||
| 297 | + | ||
| 296 | //记录最后一个数据的时间戳作为整个录制回放的总时间戳 | 298 | //记录最后一个数据的时间戳作为整个录制回放的总时间戳 |
| 297 | this._recordPlaybackMaxTime = timestamp; | 299 | this._recordPlaybackMaxTime = timestamp; |
| 298 | } | 300 | } |
| @@ -300,6 +302,12 @@ class RecordPlayBackParse extends Emiter { | @@ -300,6 +302,12 @@ class RecordPlayBackParse extends Emiter { | ||
| 300 | this._isReady = true; | 302 | this._isReady = true; |
| 301 | this._stopTimerCounter(); | 303 | this._stopTimerCounter(); |
| 302 | 304 | ||
| 305 | + //录制回放的总时间长度按课堂最长时间计算,不能按最后一个消息的时间计算 | ||
| 306 | + if(this._recordPlaybackMaxTime<GlobalConfig.classTimestamp){ | ||
| 307 | + this._recordPlaybackMaxTime=GlobalConfig.classTimestamp; | ||
| 308 | + | ||
| 309 | + } | ||
| 310 | + | ||
| 303 | GlobalConfig.recordPlaybackMaxTime = this._recordPlaybackMaxTime; | 311 | GlobalConfig.recordPlaybackMaxTime = this._recordPlaybackMaxTime; |
| 304 | loger.log("录制回放数据解析完成,录制回放的总时间长为->", this._recordPlaybackMaxTime); | 312 | loger.log("录制回放数据解析完成,录制回放的总时间长为->", this._recordPlaybackMaxTime); |
| 305 | //console.log("_messages", this._messages); | 313 | //console.log("_messages", this._messages); |
| @@ -382,13 +390,13 @@ class RecordPlayBackParse extends Emiter { | @@ -382,13 +390,13 @@ class RecordPlayBackParse extends Emiter { | ||
| 382 | //查找关键帧,找到关键帧后再继续播放 | 390 | //查找关键帧,找到关键帧后再继续播放 |
| 383 | this._searchApeMessageKeyfram(this._conferApeMssages, ApeConsts.CONFERENCE_SESSION_ID); | 391 | this._searchApeMessageKeyfram(this._conferApeMssages, ApeConsts.CONFERENCE_SESSION_ID); |
| 384 | this._searchApeMessageKeyfram(this._docApeMssages, ApeConsts.DOCSHARING_SESSION_ID); | 392 | this._searchApeMessageKeyfram(this._docApeMssages, ApeConsts.DOCSHARING_SESSION_ID); |
| 385 | - this._searchApeMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID); | 393 | + //this._searchApeMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID); |
| 386 | this._searchApeMessageKeyfram(this._videoApeMssages, ApeConsts.VIDEO_SESSION_ID); | 394 | this._searchApeMessageKeyfram(this._videoApeMssages, ApeConsts.VIDEO_SESSION_ID); |
| 387 | this._searchApeMessageKeyfram(this._audioApeMssages, ApeConsts.AUDIO_SESSION_ID); | 395 | this._searchApeMessageKeyfram(this._audioApeMssages, ApeConsts.AUDIO_SESSION_ID); |
| 388 | 396 | ||
| 389 | - //聊天模块的比较特殊,消息是累计的 | ||
| 390 | - this._searchChatApeMessageKeyfram(this._chatApeMssages, ApeConsts.CHAT_SESSION_ID); | ||
| 391 | - | 397 | + //聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条 |
| 398 | + this._searchApeHistoryMessageKeyfram(this._chatApeMssages, ApeConsts.CHAT_SESSION_ID); | ||
| 399 | + this._searchApeHistoryMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID); | ||
| 392 | 400 | ||
| 393 | //各个ape模块无论有没有找到关键帧数据,都继续播放 | 401 | //各个ape模块无论有没有找到关键帧数据,都继续播放 |
| 394 | this._startTimerCounter(); | 402 | this._startTimerCounter(); |
| @@ -420,7 +428,9 @@ class RecordPlayBackParse extends Emiter { | @@ -420,7 +428,9 @@ class RecordPlayBackParse extends Emiter { | ||
| 420 | } | 428 | } |
| 421 | 429 | ||
| 422 | //查找聊天模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示 | 430 | //查找聊天模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示 |
| 423 | - _searchChatApeMessageKeyfram(_apeMessages) { | 431 | + _searchApeHistoryMessageKeyfram(_apeMessages) { |
| 432 | + //最多30条数据 | ||
| 433 | + let counter=0; | ||
| 424 | let messageItem; | 434 | let messageItem; |
| 425 | let keyFrameSeek = 0; | 435 | let keyFrameSeek = 0; |
| 426 | for (let i = this._recordPlaybackTimestamp; i > 0; i--) { | 436 | for (let i = this._recordPlaybackTimestamp; i > 0; i--) { |
| @@ -429,9 +439,15 @@ class RecordPlayBackParse extends Emiter { | @@ -429,9 +439,15 @@ class RecordPlayBackParse extends Emiter { | ||
| 429 | //把时间点对应的数据发送,同一秒内有存在多个数据的情况 | 439 | //把时间点对应的数据发送,同一秒内有存在多个数据的情况 |
| 430 | for (let i = 0; i < messageItem.length; i++) { | 440 | for (let i = 0; i < messageItem.length; i++) { |
| 431 | this._everSocketMsgReceivedHandler(messageItem[i].byteData, 0); | 441 | this._everSocketMsgReceivedHandler(messageItem[i].byteData, 0); |
| 442 | + counter++; | ||
| 443 | + if(counter>30){ | ||
| 444 | + loger.warn("SEEK->最多处理历史消息30条"); | ||
| 445 | + return; | ||
| 446 | + } | ||
| 432 | } | 447 | } |
| 433 | } | 448 | } |
| 434 | } | 449 | } |
| 450 | + | ||
| 435 | } | 451 | } |
| 436 | 452 | ||
| 437 | } | 453 | } |
| @@ -377,6 +377,13 @@ class ConferApe extends Ape { | @@ -377,6 +377,13 @@ class ConferApe extends Ape { | ||
| 377 | 377 | ||
| 378 | //如果是host ,开始录制 | 378 | //如果是host ,开始录制 |
| 379 | this.startRecord(); | 379 | this.startRecord(); |
| 380 | + }else if(GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_WAIT&& | ||
| 381 | + GlobalConfig.isHost&& GlobalConfig.isAutoStartClass&& | ||
| 382 | + !GlobalConfig.isRecordPlayBack){ | ||
| 383 | + //自动开始上课的4个条件 | ||
| 384 | + //1.如果自己是host,2.Sass配置的是自动开始上课,3.并且当前是未开始状态,4.当前不是录制回放,开始自动上课 | ||
| 385 | + loger.log('自动开始上课->classStatus:', GlobalConfig.classStatus, " isHost:",GlobalConfig.isHost, " isAutoStartClass:",GlobalConfig.isAutoStartClass, " isRecordPlayBack:",GlobalConfig.isRecordPlayBack); | ||
| 386 | + this.startClass(); | ||
| 380 | } | 387 | } |
| 381 | } | 388 | } |
| 382 | 389 |
-
请 注册 或 登录 后发表评论