This commit is contained in:
yj 2024-07-12 16:08:18 +08:00
parent 1674f227a3
commit ad0f89b16f
2 changed files with 74 additions and 46 deletions

View File

@ -257,15 +257,16 @@ const Meeting: React.FC = () => {
} }
// 获取房间用户 // 获取房间用户
const getRoomUser = async (): Promise<void> => { const getRoomUser = async (callBack: Function): Promise<void> => {
await GetRoomUser(state.channelId).then(res => { await GetRoomUser(state.channelId).then(res => {
if (res.code === 200) { if (res.code === 200) {
setRoomUserList(res.data) setRoomUserList(res.data)
setTimeout(() => { callBack(res.data)
res.data.forEach((item: any) => { // setTimeout(() => {
agora.setVideo(Number(item.account), document.getElementById(`video-${item.account}`), state.channelId) // res.data.forEach((item: any) => {
}) // agora.setVideo(Number(item.account), document.getElementById(`video-${item.account}`), state.channelId)
}, 1000) // })
// }, 1000)
} }
}) })
} }
@ -275,12 +276,35 @@ const Meeting: React.FC = () => {
onInvoke('joinChannel', { onInvoke('joinChannel', {
roomNum: state.channelId roomNum: state.channelId
}) })
getRoomUser() getRoomUser((data: any) => {
setTimeout(() => {
data.forEach((item: any) => {
agora.setVideo({
account: Number(item.account),
view: document.getElementById(`video-${item.account}`),
channelId: state.channelId
})
})
}, 1000)
})
} else { } else {
onInvoke('levelChannel', { onInvoke('levelChannel', {
roomNum: state.channelId roomNum: state.channelId
}) })
} }
} else if (e.key === 'isRemotJoin') {
getRoomUser((data: any) => {
setTimeout(() => {
data.forEach((item: any) => {
agora.setVideo({
account: Number(item.account),
view: document.getElementById(`video-${item.account}`),
channelId: state.channelId,
isRemotJoin: e.value
})
})
}, 1000)
})
} }
}; };
return ( return (

View File

@ -35,33 +35,12 @@ const agora = {
}, },
// 监听远端用户加入频道事件 // 监听远端用户加入频道事件
onUserJoined: (info: any, remoteUid: any, elapsed: any) => { onUserJoined: (info: any, remoteUid: any, elapsed: any) => {
console.log(info, remoteUid, '远端加入频道'); storage.setItem('isRemotJoin', true)
// 远端用户加入频道后,设置远端视频窗口
rtcEngine.setupRemoteVideo(
{
renderMode: RenderModeType.RenderModeFit,
sourceType: VideoSourceType.VideoSourceRemote,
uid: remoteUid,
view: '',
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
},
{ channelId: info.channelId },
);
}, },
// 监听用户离开频道事件 // 监听用户离开频道事件
onUserOffline: ({ channelId, localUid }: any, remoteUid: any, reason: any) => { onUserOffline: (info: any, remoteUid: any, reason: any) => {
// 远端用户离开频道后,关闭远端视频窗口 // 远端用户离开频道后,关闭远端视频窗口
console.log({ channelId, localUid }, remoteUid, '离开频道'); storage.setItem('isRemotJoin', false)
rtcEngine.setupRemoteVideo(
{
renderMode: RenderModeType.RenderModeFit,
sourceType: VideoSourceType.VideoSourceRemote,
uid: remoteUid,
view: '',
setupMode: VideoViewSetupMode.VideoViewSetupRemove,
},
);
}, },
// 视频发布状态改变回调 // 视频发布状态改变回调
onVideoPublishStateChanged: (source: any, channel: any, oldState: any, newState: any, elapseSinceLastState: any) => { onVideoPublishStateChanged: (source: any, channel: any, oldState: any, newState: any, elapseSinceLastState: any) => {
@ -86,28 +65,53 @@ const agora = {
}); });
}, },
// 渲染视频 // 渲染视频
setVideo: (localUid: number, view: any, channelId: string) => { setVideo: (item: any) => {
console.log(view, localUid, channelId); console.log(item);
if (option.userid === localUid) { if (option.userid === item.account) {
rtcEngine.setupLocalVideo({ rtcEngine.setupLocalVideo({
renderMode: RenderModeType.RenderModeFit, renderMode: RenderModeType.RenderModeFit,
// sourceType: VideoSourceType.VideoSourceScreen, // sourceType: VideoSourceType.VideoSourceScreen,
sourceType: VideoSourceType.VideoSourceCameraPrimary, sourceType: VideoSourceType.VideoSourceCameraPrimary,
uid: localUid, uid: item.item,
view, view: item.view,
setupMode: VideoViewSetupMode.VideoViewSetupAdd, setupMode: VideoViewSetupMode.VideoViewSetupAdd,
}); });
} else { } else {
rtcEngine.setupRemoteVideo( if (typeof item.isRemotJoin === 'boolean') {
{ if (item.isRemotJoin) {
renderMode: RenderModeType.RenderModeFit, rtcEngine.setupRemoteVideo(
sourceType: VideoSourceType.VideoSourceRemote, {
uid: localUid, renderMode: RenderModeType.RenderModeFit,
view, sourceType: VideoSourceType.VideoSourceRemote,
setupMode: VideoViewSetupMode.VideoViewSetupAdd, uid: item.item,
}, view: item.view,
{ channelId }, setupMode: VideoViewSetupMode.VideoViewSetupAdd,
); },
{ channelId: item.channelId },
);
} else {
rtcEngine.setupRemoteVideo(
{
renderMode: RenderModeType.RenderModeFit,
sourceType: VideoSourceType.VideoSourceRemote,
uid: item.item,
view: item.view,
setupMode: VideoViewSetupMode.VideoViewSetupRemove,
},
);
}
} else {
rtcEngine.setupRemoteVideo(
{
renderMode: RenderModeType.RenderModeFit,
sourceType: VideoSourceType.VideoSourceRemote,
uid: item.item,
view: item.view,
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
},
{ channelId: item.channelId },
);
}
} }