diff --git a/preload.js b/preload.js index 22ec5f6..5fa46a0 100644 --- a/preload.js +++ b/preload.js @@ -1,7 +1,5 @@ // // 在 preload 脚本中。 -const { default: createAgoraRtcEngine } = require('agora-electron-sdk') const { ipcRenderer } = require('electron') -let rtcEngine = createAgoraRtcEngine() window.electron = { // 设置窗口大小 setMainWindowSize: (config) => { @@ -70,8 +68,5 @@ window.electron = { // 关闭会议监控窗口 closeMonitorWindow: () => { ipcRenderer.invoke('closeMonitorWindow') - }, - getrtcEngine: () => { - return rtcEngine - }, + } } diff --git a/src/components/JoinSetting/index.tsx b/src/components/JoinSetting/index.tsx index 08ff77e..7f2d635 100644 --- a/src/components/JoinSetting/index.tsx +++ b/src/components/JoinSetting/index.tsx @@ -150,7 +150,7 @@ const JoinSetting = forwardRef((_props: any, ref: any) => { setJoinRoomSettingForm(list) if (index === 1) { if (list[index].active) { - agora.startPreview('videoPreview', Number(user.account)) + agora.startPreview('videoPreview', Number(user.screenShareId)) } } } else { diff --git a/src/components/StupWizard/index.tsx b/src/components/StupWizard/index.tsx index c3dd6d8..45de259 100644 --- a/src/components/StupWizard/index.tsx +++ b/src/components/StupWizard/index.tsx @@ -166,7 +166,7 @@ const VideoComponents = () => { }) if (setting.videoDeviceId && list.length) { await agora.setVideoDeviceManager(setting.videoDeviceId) - await agora.startPreview('videoPreview', Number(userInfo.account)) + await agora.startPreview('videoPreview', Number(userInfo.screenShareId)) } }) } diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 2b13469..ae4bf99 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -85,13 +85,13 @@ const Meeting: React.FC = () => { active: false, select: false, }, - // { - // title: '会议监控', - // icon: ImageUrl.icon48, - // iconSelect: ImageUrl.icon48Select, - // active: false, - // select: false, - // }, + { + title: '会议监控', + icon: ImageUrl.icon48, + iconSelect: ImageUrl.icon48Select, + active: false, + select: false, + }, { title: '录制', icon: ImageUrl.icon27, @@ -185,68 +185,7 @@ const Meeting: React.FC = () => { } }, 1000) setMeetingMode('StandardMode'); - agora.init(true) - agora.registerEventHandler({ - onJoinChannelSuccess: async (info: any, _elapsed: any) => { - if (String(info.localUid).length !== 9) { - await getJoin(state.enableMicr, state.enableCamera) - setTimeout(async () => { - await agora.setupLocalVideo({ - uid: Number(info.localUid), - view: document.getElementById(`video-${info.localUid}`), - channelId: info.channelId, - sourceType: VideoSourceType.VideoSourceCameraPrimary, - }) - getShowUser(); - }, 1000); - } - }, - onUserJoined: async (info: any, remoteUid: any, _elapsed: any) => { - if (String(remoteUid).length === 9) { - setIsShare(remoteUid) - } else { - setTimeout(async () => { - await agora.setupRemoteVideoJoin({ - uid: Number(remoteUid), - view: document.getElementById(`video-${remoteUid}`), - channelId: info.channelId, - }) - }, 1000); - } - }, - onUserOffline: async (info: any, remoteUid: any, _reason: any) => { - if (String(remoteUid).length === 9) { - setIsShare(null) - renderVideo() - } - await agora.setupRemoteVideo({ - uid: Number(remoteUid), - view: null, - channelId: info.channelId, - }); - setCurrentVideoId((res: any) => { - if (Number(res) === remoteUid) { - getShowUser(); - } - return res - }) - }, - onAudioVolumeIndication: async (speakers: any) => { - speakers.forEach((item: any) => { - let dom = document.getElementById(`micr-${item.uid ? item.uid : userInfo.uid}`); - if (dom) { - const percentage = (item.volume / 255) * 100 - dom.style.width = `${percentage}%` - } - }); - } - }) - agora.startCameraCapture() - agora.setJoinChannel({ - channelId: state.channelId, - uid: userInfo.uid, - token: state.token, - }) + agoraInit() storage.setItem('noViewChatList', 0) window.addEventListener('customStorageChange', handleCustomStorageChange); window.addEventListener('online', handleNetworkChange); @@ -465,6 +404,18 @@ const Meeting: React.FC = () => { pauseOnHover: false, }); break; + // 管理员查看随机用户 + case 'Watch': + if (userInfo.roleId !== '1') { + let userId = item.watchUids.find((uid: any) => uid === userInfo.uid) + if (userId) { + await agora.startCameraCapture() + } else { + await agora.stopCameraCapture(); + } + agora.updateChannelMediaOptionsEx(userId ? true : false) + } + break; } }) return () => { @@ -520,6 +471,81 @@ const Meeting: React.FC = () => { return () => clearTimeout(timer); }, [isClicked]); + // 声网初始化 + const agoraInit = async () => { + await agora.init(true) + agora.registerEventHandler({ + onJoinChannelSuccess: async (info: any, _elapsed: any) => { + if (info.channelId === state.channelId) { + if (String(info.localUid).length !== 9) { + await getJoin(state.enableMicr, state.enableCamera) + setTimeout(async () => { + await agora.setupLocalVideo({ + uid: Number(info.localUid), + view: document.getElementById(`video-${info.localUid}`), + channelId: info.channelId, + sourceType: VideoSourceType.VideoSourceCameraPrimary, + }) + getShowUser(); + }, 1000); + } + } + }, + onUserJoined: async (info: any, remoteUid: any, _elapsed: any) => { + if (info.channelId === state.channelId) { + if (String(remoteUid).length === 9) { + setIsShare(remoteUid) + } else { + setTimeout(async () => { + await agora.setupRemoteVideoJoin({ + uid: Number(remoteUid), + view: document.getElementById(`video-${remoteUid}`), + channelId: info.channelId, + }) + }, 1000); + } + } + }, + onUserOffline: async (info: any, remoteUid: any, _reason: any) => { + if (info.channelId === state.channelId) { + if (String(remoteUid).length === 9) { + setIsShare(null) + renderVideo() + } + await agora.setupRemoteVideo({ + uid: Number(remoteUid), + view: null, + channelId: info.channelId, + }); + setCurrentVideoId((res: any) => { + if (Number(res) === remoteUid) { + getShowUser(); + } + return res + }) + } + }, + onAudioVolumeIndication: async (speakers: any) => { + speakers.forEach((item: any) => { + let dom = document.getElementById(`micr-${item.uid ? item.uid : userInfo.uid}`); + if (dom) { + const percentage = (item.volume / 255) * 100 + dom.style.width = `${percentage}%` + } + }); + } + }) + if (state.enableCamera) { + agora.startCameraCapture() + } + agora.setJoinChannel({ + channelId: state.channelId, + uid: userInfo.uid, + screenShareId: userInfo.screenShareId, + token: state.token, + // tokenA: state.tokenA, + }) + } // 状态更新 const changeAgoraDevice = () => { setRoomUserList((res: any) => { @@ -915,7 +941,7 @@ const Meeting: React.FC = () => { break; case '会议监控': window.electron.oepnWindow({ - url: location.origin + '/#/userVideo' + url: location.origin + `/#/userVideo?channelId=${state.channelId + '1'}&token=${state.tokenA}` }) break; } diff --git a/src/render.d.ts b/src/render.d.ts index 21b4071..e0a5232 100644 --- a/src/render.d.ts +++ b/src/render.d.ts @@ -17,7 +17,6 @@ export interface IElectronAPI { getVersion: () => Promise; oepnWindow: (data: any) => any; - getrtcEngine: () => any; closeMonitorWindow: () => void }