Просмотр исходного кода

fix(student view): 修复计时器消息传递的类型不匹配问题

将计时器消息的payload在发送前转为JSON字符串,接收时再解析,确保前后端消息格式一致,解决计时器无法正常同步的问题
lsc 2 недель назад
Родитель
Сommit
cc7bcb0589
1 измененных файлов с 4 добавлено и 4 удалено
  1. 4 4
      src/views/Student/index.vue

+ 4 - 4
src/views/Student/index.vue

@@ -3605,7 +3605,7 @@ const getMessages = (msgObj: any) => {
 
 
   // 计时器消息 - 学生与老师端实时显示
   // 计时器消息 - 学生与老师端实时显示
   if (msgObj.type === 'timer_start' && msgObj.courseid === props.courseid) {
   if (msgObj.type === 'timer_start' && msgObj.courseid === props.courseid) {
-    applyTimerStart(msgObj.payload)
+    applyTimerStart(JSON.parse(msgObj.payload))
   }
   }
   if (msgObj.type === 'timer_pause' && msgObj.courseid === props.courseid) {
   if (msgObj.type === 'timer_pause' && msgObj.courseid === props.courseid) {
     applyTimerPause()
     applyTimerPause()
@@ -4394,7 +4394,7 @@ const onTimerStart = (payload: { isCountdown: boolean; startAt: string; duration
   timerIndicator.value.finished = false
   timerIndicator.value.finished = false
   startLocalTick(payload.isCountdown)
   startLocalTick(payload.isCountdown)
   if (isCreator.value) {
   if (isCreator.value) {
-    sendMessage({ type: 'timer_start', courseid: props.courseid, payload })
+    sendMessage({ type: 'timer_start', courseid: props.courseid, payload: JSON.stringify(payload) })
     // 持久化状态到 YMap(带运行状态与基线)
     // 持久化状态到 YMap(带运行状态与基线)
     const isCd = payload.isCountdown
     const isCd = payload.isCountdown
     const state: any = {
     const state: any = {
@@ -4512,11 +4512,11 @@ const onTimerUpdate = (payload: { durationSec: number }) => {
     sendMessage({ 
     sendMessage({ 
       type: 'timer_start', 
       type: 'timer_start', 
       courseid: props.courseid, 
       courseid: props.courseid, 
-      payload: { 
+      payload: JSON.stringify({ 
         isCountdown: true, 
         isCountdown: true, 
         startAt: newStartAt, 
         startAt: newStartAt, 
         durationSec: payload.durationSec 
         durationSec: payload.durationSec 
-      } 
+      }) 
     })
     })
   }
   }
 }
 }