|
|
@@ -580,6 +580,9 @@ const reconnectTimer = ref<NodeJS.Timeout | null>(null)
|
|
|
const isConnecting = ref(false)
|
|
|
const connectionStatus = ref<'disconnected' | 'connecting' | 'connected'>('disconnected')
|
|
|
|
|
|
+// 同步数据最大保留时间(40分钟)
|
|
|
+const SYNC_DATA_MAX_AGE = 40 * 60 * 1000 // 40分钟 = 40 * 60 * 1000毫秒
|
|
|
+
|
|
|
// 切换选择题题目
|
|
|
const changeWorkIndex = (type:number) => {
|
|
|
if (answerTheResultRef.value && answerTheResultRef.value.changeWorkIndex) {
|
|
|
@@ -2156,7 +2159,7 @@ const checkPPTFile = async (jsonObj: any) => {
|
|
|
const data3 = res[2]
|
|
|
console.log(data1, data2, data3)
|
|
|
if (res[0].length) {
|
|
|
- pptJsonFileid.value = data1[0][0].fileid
|
|
|
+ pptJsonFileid.value = data1[0].fileid
|
|
|
}
|
|
|
else {
|
|
|
const pptJsonFile = new File([jsonObj], courseDetail.value.courseName + '.json', { type: 'application/json' })
|
|
|
@@ -2450,6 +2453,35 @@ const messageInit = () => {
|
|
|
console.log('获取message', docSocket.value, yMessage.value)
|
|
|
yMessage.value = docSocket.value.getArray('message')
|
|
|
yMessage.value.observe((e: any) => {
|
|
|
+ // 数据同步完成后,清理超过40分钟的消息数据
|
|
|
+ const messages = yMessage.value.toArray()
|
|
|
+ if (messages.length > 0) {
|
|
|
+ const now = Date.now()
|
|
|
+ const messagesToKeep: any[] = []
|
|
|
+
|
|
|
+ for (let i = messages.length - 1; i >= 0; i--) {
|
|
|
+ const message = messages[i]
|
|
|
+ if (message && typeof message === 'object' && message.timestamp) {
|
|
|
+ const messageTime = new Date(message.timestamp).getTime()
|
|
|
+ if (now - messageTime <= SYNC_DATA_MAX_AGE) {
|
|
|
+ messagesToKeep.unshift(message)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果有需要清理的消息
|
|
|
+ if (messagesToKeep.length < messages.length) {
|
|
|
+ // 修复报错:docSocket.value 可能为 null
|
|
|
+ if (docSocket.value) {
|
|
|
+ docSocket.value.transact(() => {
|
|
|
+ yMessage.value.delete(0, messages.length)
|
|
|
+ messagesToKeep.forEach((msg: any) => yMessage.value.push([msg]))
|
|
|
+ })
|
|
|
+ console.log(`🧹 清理了 ${messages.length - messagesToKeep.length} 条超过40分钟的消息`)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
e.changes.added.forEach((i: any) => {
|
|
|
const message = i.content.getContent()[0]
|
|
|
console.log('yMessage', message)
|