Jelajahi Sumber

✨ feat: 刷新页面获取远程流信息

wolyshaw 3 tahun lalu
induk
melakukan
fc8688953b

+ 1 - 0
src/components/live-broadcast/header.tsx

@@ -37,6 +37,7 @@ export default defineComponent({
         //   }
         // })
         await RuntimeUtils.closeLive()
+        await RuntimeUtils.sendMessage({}, 'PauseLive')
         ElMessage.success('关闭成功')
       } catch (error) {
       }

+ 12 - 1
src/components/live-broadcast/index.tsx

@@ -7,6 +7,7 @@ import { state } from '/src/state'
 import event, { LIVE_EVENT_MESSAGE } from './event'
 import runtime, * as RuntimeUtils from './runtime'
 import Chronography from './chronography'
+import runtimeModel, * as RuntimeModelUtils from '/src/components/live-message/model/runtime'
 import { requireMedia } from './helpers'
 import styles from './index.module.less'
 
@@ -139,6 +140,11 @@ export default defineComponent({
             if (track.isAudioTrack()) {
               // 音轨不需要传递播放控件
               track.play()
+              const trackUser = runtimeModel.lookList[track.getUserId()]
+              runtimeModel.joinList[track.getUserId()] = {
+                ...trackUser,
+                userRoomType: 4,
+              }
             }
           },
           onUserJoin (userIds: string[]) {
@@ -149,12 +155,17 @@ export default defineComponent({
             console.log('onUserLeave', userIds)
           },
         })
+        // RuntimeUtils.sendMessage({}, 'Welcome')
+        const remoteTracks: RTC.RCRemoteTrack[] | undefined = join?.room?.getRemoteTracks()
+        if (remoteTracks) {
+          await join?.room?.subscribe(remoteTracks)
+        }
         if (join.room && join.code === RTC.RCRTCCode.SUCCESS) {
           runtime.joinedRoom = join.room
           join.room.registerReportListener({
             onStateReport(report) {
               event.emit('onStateReport', report)
-              console.log('onStateReport', report)
+              // console.log('onStateReport', report)
             }
           })
         }

+ 10 - 1
src/components/live-broadcast/runtime.ts

@@ -120,6 +120,11 @@ const MessageSeatMember = RongIMLib.registerMessageType('RC:Chatroom:SeatMember'
 // 当前点赞数量同步
 const MessageLikeCount = RongIMLib.registerMessageType('RC:Chatroom:LikeCount', true, true)
 
+// 老师进入房间,刷新页面也会发送
+const MessageWelcome = RongIMLib.registerMessageType('RC:Chatroom:Welcome', true, true)
+
+// 暂停直播消息
+const MessagePauseLive = RongIMLib.registerMessageType('RC:Chatroom:PauseLive', true, true)
 
 type MessageProps = {
   messageType: 'RC:Chatroom:Welcome' | 'RC:TxtMsg' | 'RC:Chatroom:Barrage' | 'RC:Chatroom:Like' | 'RC:Chatroom:SeatsCtrl' | 'RC:Chatroom:ChatBan' | 'RC:Chatroom:SeatApply',
@@ -649,7 +654,7 @@ export const loopSyncLike = async () => {
   }, 1000 * 10)
 }
 
-type SendMessageType = 'text' | 'image' | 'audio' | 'video' | 'file' | 'SeatsCtrl' | 'ChatBan' | 'SeatApply' | 'SeatResponse' | 'MemberCount' | 'SeatMember' | 'LikeCount'
+type SendMessageType = 'text' | 'image' | 'audio' | 'video' | 'file' | 'SeatsCtrl' | 'ChatBan' | 'SeatApply' | 'SeatResponse' | 'MemberCount' | 'SeatMember' | 'LikeCount' | 'Welcome' | 'PauseLive'
 
 export const getSendMessageUser = () => {
   return {
@@ -692,6 +697,10 @@ export const sendMessage = async (msg: any, type: SendMessageType = 'text') => {
     message = new MessageSeatMember(msg)
   } else if(type === 'LikeCount') {
     message = new MessageLikeCount(msg)
+  } else if (type === 'Welcome') {
+    message = new MessageWelcome(msg)
+  } else if (type === 'PauseLive') {
+    message = new MessagePauseLive(msg)
   }
   if (!message) return
   console.log(message)