Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
李勇
/
McuClient
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
李勇
2017-04-10 16:57:28 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ea138f42a813fc5a7df9df6daa0064e2fb94a290
ea138f42
1 parent
0f2e2ece
1.修复课堂中老师异常离开之后,学生进入时课堂依旧显示正在上课中的问题
2.修复录制回放时seek之后,聊天消息顺序倒着的问题
显示空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
58 行增加
和
33 行删除
dist/McuClient.js
src/EngineEntrance.js
src/RecordPlayBackParse.js
src/apes/ConferApe.js
dist/McuClient.js
查看文件 @
ea138f4
此 diff 太大无法显示。
src/EngineEntrance.js
查看文件 @
ea138f4
...
...
@@ -26,7 +26,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil';
import
UTF8
from
'utf-8'
;
let
loger
=
Loger
.
getLoger
(
'MessageEntrance'
);
let
_sdkInfo
=
{
"version"
:
"v.1.8.1
3.20170409
"
,
"author"
:
"www.3mang.com"
};
let
_sdkInfo
=
{
"version"
:
"v.1.8.1
6.20170410
"
,
"author"
:
"www.3mang.com"
};
//APE
let
_sass
;
...
...
@@ -232,7 +232,7 @@ export default class MessageEntrance extends Emiter {
loger
.
warn
(
"不能保存课堂状态"
,
GlobalConfig
.
getCurrentStatus
());
return
;
}
this
.
_sassSaveClassStatusInfo
();
this
.
_sassSaveClassStatusInfo
(
_param
);
}
//如果是第一次点击开始上课,需要创建录制时的文件名
...
...
@@ -540,8 +540,15 @@ export default class MessageEntrance extends Emiter {
}
//保存课堂状态信息
_sassSaveClassStatusInfo
()
{
if
(
GlobalConfig
.
isHost
)
{
_sassSaveClassStatusInfo
(
_param
)
{
//{isForce:true} isForce->是否强制提交(true为是)
//这个是特殊权限
let
isForce
=
false
;
if
(
_param
&&
_param
.
isForce
==
true
){
isForce
=
true
;
}
if
(
GlobalConfig
.
isHost
||
isForce
)
{
//只有加入课堂之后才能保存数据
if
(
GlobalConfig
.
getCurrentStatus
().
code
==
GlobalConfig
.
statusCode_2
.
code
)
{
//POST 保存数据
...
...
src/RecordPlayBackParse.js
查看文件 @
ea138f4
...
...
@@ -13,7 +13,6 @@ import GlobalConfig from 'GlobalConfig';
import
EngineUtils
from
'EngineUtils'
;
import
TimerCounter
from
"TimerCounter"
;
let
parseBuffer
;
// 日志对象
const
loger
=
Loger
.
getLoger
(
'RecordPlayBackParse'
);
...
...
@@ -29,12 +28,10 @@ class RecordPlayBackParse extends Emiter {
loger
.
log
(
"RecordPlayBackParse"
);
parseBuffer
=
new
ByteBuffer
(
ByteBuffer
.
DEFAULT_CAPACITY
,
ByteBuffer
.
LITTLE_ENDIAN
);
parseBuffer
.
clear
();
//console.log(parseBuffer);
this
.
_recordPlaybackTimestamp
=
0
;
//回放的时间
this
.
_recordPlaybackMaxTime
=
0
;
//录制回放的总时间
this
.
_isReady
=
false
;
//录制回放是否已经准备完成
this
.
_apes
=
{};
//this._messages = {};
this
.
_conferApeMssages
=
{};
//会议数据
this
.
_chatApeMssages
=
{};
//聊天数据
...
...
@@ -312,14 +309,6 @@ class RecordPlayBackParse extends Emiter {
GlobalConfig
.
recordPlaybackMaxTime
=
this
.
_recordPlaybackMaxTime
;
loger
.
log
(
"录制回放数据解析完成,录制回放的总时间长为->"
,
this
.
_recordPlaybackMaxTime
);
//console.log("_messages", this._messages);
//loger.log("_conferApeMssages", this._conferApeMssages);
//loger.log("_chatApeMssages", this._chatApeMssages);
//loger.log("_docApeMssages", this._docApeMssages);
//loger.log("_whiteApeMssages", this._whiteApeMssages);
//loger.log("_videoApeMssages", this._videoApeMssages);
//loger.log("_audioApeMssages", this._audioApeMssages);
this
.
_emit
(
RecordPlayBackParse
.
CLASS_JOIN_RECORD_PLAYBACK_SUCCESS
,
{
"recordPlaybackMaxTime"
:
this
.
_recordPlaybackMaxTime
});
}
...
...
@@ -356,7 +345,7 @@ class RecordPlayBackParse extends Emiter {
if
(
!
this
.
_isReady
)
{
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"录制回放还未准备完成"
};
}
console
.
log
(
"classStatusInfo"
,
GlobalConfig
.
classStatusInfo
);
loger
.
log
(
"classStatusInfo"
,
GlobalConfig
.
classStatusInfo
);
this
.
_startTimerCounter
();
this
.
_emit
(
MessageTypes
.
RECORD_PLAYBACK_UPDATE
,
{
"status"
:
PLAY
});
}
...
...
@@ -400,13 +389,12 @@ 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
.
_videoApeMssages
,
ApeConsts
.
VIDEO_SESSION_ID
);
this
.
_searchApeMessageKeyfram
(
this
.
_audioApeMssages
,
ApeConsts
.
AUDIO_SESSION_ID
);
//聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条
this
.
_searchApeHistoryMessageKeyfram
(
this
.
_chatApeMssages
,
ApeConsts
.
CHAT_SESSION_ID
);
this
.
_searchApeHistoryMessageKeyfram
(
this
.
_whiteApeMssages
,
ApeConsts
.
WHITEBOARD_SESSION_ID
);
this
.
_searchChatHistoryMessageKeyfram
(
this
.
_chatApeMssages
,
ApeConsts
.
CHAT_SESSION_ID
);
this
.
_searchWhiteboradHistoryMessageKeyfram
(
this
.
_whiteApeMssages
,
ApeConsts
.
WHITEBOARD_SESSION_ID
);
//各个ape模块无论有没有找到关键帧数据,都继续播放
this
.
_startTimerCounter
();
...
...
@@ -438,19 +426,46 @@ class RecordPlayBackParse extends Emiter {
}
//查找聊天模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示
_searchApeHistoryMessageKeyfram
(
_apeMessages
)
{
_searchChatHistoryMessageKeyfram
(
_apeMessages
)
{
//最多30条数据
let
counter
=
0
;
let
messageItem
;
let
mssageArr
=
[];
for
(
let
i
=
this
.
_recordPlaybackTimestamp
;
i
>
0
;
i
--
)
{
messageItem
=
_apeMessages
[
i
];
if
(
messageItem
)
{
//把时间点对应的数据发送,同一秒内有存在多个数据的情况
for
(
let
i
=
0
;
i
<
messageItem
.
length
;
i
++
)
{
//this._everSocketMsgReceivedHandler(messageItem[i].byteData, 0);
mssageArr
.
push
(
messageItem
[
i
].
byteData
);
counter
++
;
if
(
counter
>
30
){
loger
.
warn
(
"SEEK->最多处理历史消息30条"
);
break
;
}
}
}
}
//mssageArr记录的数据是按时间最大排序的,发消息的时候需要从时间小的开始,倒着发数据
let
len
=
mssageArr
.
length
;
if
(
len
>
0
){
for
(
let
k
=
len
-
1
;
k
>=
0
;
k
--
){
this
.
_everSocketMsgReceivedHandler
(
mssageArr
[
k
],
0
);
}
}
}
//查找白板标注模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示
_searchWhiteboradHistoryMessageKeyfram
(
_apeMessages
)
{
//最多30条数据
let
counter
=
0
;
let
messageItem
;
let
keyFrameSeek
=
0
;
//let mssageArr=[];
for
(
let
i
=
this
.
_recordPlaybackTimestamp
;
i
>
0
;
i
--
)
{
messageItem
=
_apeMessages
[
i
];
if
(
messageItem
)
{
//把时间点对应的数据发送,同一秒内有存在多个数据的情况
for
(
let
i
=
0
;
i
<
messageItem
.
length
;
i
++
)
{
this
.
_everSocketMsgReceivedHandler
(
messageItem
[
i
].
byteData
,
0
);
//mssageArr.push(messageItem[i].byteData);
counter
++
;
if
(
counter
>
30
){
loger
.
warn
(
"SEEK->最多处理历史消息30条"
);
...
...
@@ -459,13 +474,6 @@ class RecordPlayBackParse extends Emiter {
}
}
}
////mssageArr记录的数据是按时间最大排序的,发消息的时候需要从时间小的开始,倒着发数据
//let len=mssageArr.length;
//if(len>0){
// for (let k=len-1;k>0;k--){
// this._everSocketMsgReceivedHandler(mssageArr[k], 0);
// }
//}
}
}
...
...
src/apes/ConferApe.js
查看文件 @
ea138f4
...
...
@@ -296,7 +296,7 @@ class ConferApe extends Ape {
}
}
//暂停上课
//暂停上课
{isForce:true} isForce->是否强制提交(true为是)
pauseClass
(
_param
)
{
if
(
GlobalConfig
.
classStatus
==
ApeConsts
.
CLASS_STATUS_WAIT
)
{
loger
.
warn
(
'还没有开始,不能点暂停'
);
...
...
@@ -306,7 +306,7 @@ class ConferApe extends Ape {
GlobalConfig
.
classStopTime
=
EngineUtils
.
creatTimestampStr
();
this
.
stopRecord
();
this
.
_emit
(
MessageTypes
.
CLASS_STATUS_INFO_CHANGE
);
this
.
_emit
(
MessageTypes
.
CLASS_STATUS_INFO_CHANGE
,
_param
);
this
.
sendUpdaterClassStatusInfo
({
"actionType"
:
2
});
this
.
stopTimerCounter
();
}
...
...
@@ -524,7 +524,17 @@ class ConferApe extends Ape {
rosterUpdateHandler
(
nodeId
,
nodeData
)
{
//如果是自己的信息,不处理跳过
if
(
nodeId
==
GlobalConfig
.
nodeId
)
{
loger
.
log
(
"自己加入课堂的消息,不需要处理"
);
loger
.
log
(
"自己加入课堂的消息->"
,
nodeId
,
"role-->"
,
nodeData
.
role
,
ApeConsts
.
userTypes
[
nodeData
.
role
]);
//自己加入的时候,需要做一下判断操作,如果满足以下3个条件就要暂停课堂:
// 1.当前课堂只有自己;2.自己的身份不是host;3当前的课堂状态为(CLASS_STATUS_STARTED= 1;//直播中)
let
rosterLen
=
Object
.
keys
(
this
.
rosters
).
length
;
if
(
rosterLen
<
1
&&!
GlobalConfig
.
isHost
&&
GlobalConfig
.
classStatus
==
ApeConsts
.
CLASS_STATUS_STARTED
){
loger
.
warn
(
"当前课堂没有老师->暂停课堂"
);
this
.
pauseClass
({
isForce
:
true
});
this
.
stopRecord
(
true
);
}
//自己添加到列表
this
.
rosters
[
nodeId
]
=
nodeData
;
return
;
}
...
...
请
注册
或
登录
后发表评论