|
@@ -1494,10 +1494,10 @@ const clearAllSyncStates = () => {
|
|
|
if (props.type == '1' && isCreator.value && docSocket.value) {
|
|
if (props.type == '1' && isCreator.value && docSocket.value) {
|
|
|
console.log('🧹 创建老师退出,清空所有同步状态')
|
|
console.log('🧹 创建老师退出,清空所有同步状态')
|
|
|
docSocket.value.transact(() => {
|
|
docSocket.value.transact(() => {
|
|
|
- // 清空普通消息
|
|
|
|
|
- const messageArray = docSocket.value?.getArray?.('message')
|
|
|
|
|
- if (messageArray) {
|
|
|
|
|
- messageArray.delete(0, messageArray.length)
|
|
|
|
|
|
|
+ // 清空普通消息(Map 结构)
|
|
|
|
|
+ const messageMap = docSocket.value?.getMap?.('message')
|
|
|
|
|
+ if (messageMap) {
|
|
|
|
|
+ messageMap.delete('latest')
|
|
|
}
|
|
}
|
|
|
// 清空计时器消息数组
|
|
// 清空计时器消息数组
|
|
|
const timerMessagesArray = docSocket.value?.getArray?.('timerMessages')
|
|
const timerMessagesArray = docSocket.value?.getArray?.('timerMessages')
|
|
@@ -3214,18 +3214,17 @@ const messageInit = () => {
|
|
|
|
|
|
|
|
// 初始化普通消息数组(只保留最后一条)
|
|
// 初始化普通消息数组(只保留最后一条)
|
|
|
if (!yMessage.value) {
|
|
if (!yMessage.value) {
|
|
|
- console.log('初始化普通消息数组')
|
|
|
|
|
- yMessage.value = docSocket.value.getArray('message')
|
|
|
|
|
|
|
+ console.log('初始化普通消息Map')
|
|
|
|
|
+ yMessage.value = docSocket.value.getMap('message')
|
|
|
yMessage.value.observe((e: any) => {
|
|
yMessage.value.observe((e: any) => {
|
|
|
- e.changes.added.forEach((i: any) => {
|
|
|
|
|
- console.log('yMessage', yMessage.value.length)
|
|
|
|
|
- console.log('yMessage', yMessage.value)
|
|
|
|
|
- const message = i.content.getContent()[0]
|
|
|
|
|
|
|
+ // Map 的 observe 事件中 keysChanged 包含被更新的 key
|
|
|
|
|
+ if (e.keysChanged.has('latest')) {
|
|
|
|
|
+ const message = yMessage.value.get('latest')
|
|
|
console.log('yMessage', message)
|
|
console.log('yMessage', message)
|
|
|
- if (message.mId !== mId.value) {
|
|
|
|
|
|
|
+ if (message && message.mId !== mId.value) {
|
|
|
getMessages(message)
|
|
getMessages(message)
|
|
|
}
|
|
}
|
|
|
- })
|
|
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -3619,9 +3618,8 @@ const sendMessage = (obj: any) => {
|
|
|
else {
|
|
else {
|
|
|
// 普通消息:只保留最后一条
|
|
// 普通消息:只保留最后一条
|
|
|
if (yMessage.value) {
|
|
if (yMessage.value) {
|
|
|
- // 清空数组,只保留新消息
|
|
|
|
|
- yMessage.value.delete(0, yMessage.value.length)
|
|
|
|
|
- yMessage.value.push([message])
|
|
|
|
|
|
|
+ // 用 Map.set 代替 Array.delete+push,只产生 1 条 update
|
|
|
|
|
+ yMessage.value.set('latest', message)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|