From 5d79891e7da6434a13cee72f8556fdae36e68afa Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 15 Jul 2024 17:26:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E9=97=AD=E9=BA=A6=E5=85=8B=E9=A3=8E?= =?UTF-8?q?=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/Meeting/index.ts | 14 ++++++++ src/page/Meeting/index.tsx | 69 ++++++++++++++++++++---------------- src/utils/package/signalr.ts | 9 ++++- 3 files changed, 61 insertions(+), 31 deletions(-) diff --git a/src/api/Meeting/index.ts b/src/api/Meeting/index.ts index e62bd80..11deee8 100644 --- a/src/api/Meeting/index.ts +++ b/src/api/Meeting/index.ts @@ -38,3 +38,17 @@ export const GetRoomUser = (roomNum: string) => url: `/room/user?roomNum=${roomNum}`, method: 'get' }) + + +export const PostOpenMicr = (data: any) => + request({ + url: `/room/oper-micr?roomNum=${data.roomNum}&enableMicr=${data.enableMicr}&uid=${data.uid}`, + method: 'post', + }) + +export const PostOpenCamera = (data: any) => + request({ + url: `/room/oper-camera?roomNum=${data.roomNum}&enableCamera=${data.enableCamera}&uid=${data.uid}`, + method: 'post', + data + }) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index f2dce39..c3a52ff 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -6,7 +6,7 @@ import { DeleteOutlined, LoadingOutlined, ProfileOutlined, ReloadOutlined, Searc import { useLocation, useNavigate } from 'react-router-dom'; import { thumbImageBufferToBase64 } from '@/utils/package/base64' import { storage } from '@/utils'; -import { GetRoomFile, PostRoomFile, DeleteRoomFile, GetRoomUpFileurl, GetRoomFileDwUrl, GetRoomUser } from '@/api/Meeting'; +import { GetRoomFile, PostRoomFile, DeleteRoomFile, GetRoomUpFileurl, GetRoomFileDwUrl, GetRoomUser, PostOpenMicr, PostOpenCamera } from '@/api/Meeting'; import axios from 'axios'; import ImageUrl from '@/utils/package/imageUrl' import agora from '@/utils/package/agora' @@ -158,7 +158,15 @@ const Meeting: React.FC = () => { useEffect(() => { onSignalr((item: any) => { - setChatList((newChatList: any) => [...newChatList, item]) + switch (item.key) { + case 'ReceiveMessage': + setChatList((newChatList: any) => [...newChatList, item]) + break; + case 'RefreshUserList': + getRoomUser() + break; + } + }) }, []) @@ -207,48 +215,28 @@ const Meeting: React.FC = () => { footerListTemplate[itemIndex][rowIndex].active = true setFooterList(footerListTemplate) agora.muteLocalAudioStream(true) - await onInvoke('joinChannel', { - roomNum: state.channelId, - isMute: false, - isCloseCamera: true - }) - getRoomUser() + postOpenMicr(false) break; case '开启声音': footerListTemplate[itemIndex][rowIndex].title = '关闭声音' footerListTemplate[itemIndex][rowIndex].active = false setFooterList(footerListTemplate) agora.muteLocalAudioStream(false) - await onInvoke('joinChannel', { - roomNum: state.channelId, - isMute: true, - isCloseCamera: true - }) - getRoomUser() + postOpenMicr(true) break; case '关闭视频': footerListTemplate[itemIndex][rowIndex].title = '开启视频' footerListTemplate[itemIndex][rowIndex].active = true setFooterList(footerListTemplate) agora.muteLocalVideoStream(true) - await onInvoke('joinChannel', { - roomNum: state.channelId, - isMute: true, - isCloseCamera: false - }) - getRoomUser() + postOpenCamera(false) break; case '开启视频': footerListTemplate[itemIndex][rowIndex].title = '关闭视频' footerListTemplate[itemIndex][rowIndex].active = false setFooterList(footerListTemplate) agora.muteLocalVideoStream(false) - await onInvoke('joinChannel', { - roomNum: state.channelId, - isMute: true, - isCloseCamera: true - }) - getRoomUser() + postOpenCamera(true) break; case '设置向导': stupWizardRef.current.changeIsStupWizard() @@ -338,8 +326,8 @@ const Meeting: React.FC = () => { if (e.value) { await onInvoke('joinChannel', { roomNum: state.channelId, - isMute: true, - isCloseCamera: true + enableMicr: true, + enableCamera: true }) getRoomUser() } else { @@ -370,6 +358,27 @@ const Meeting: React.FC = () => { message.success('请输入内容!') } } + + // 开关麦克风 + const postOpenMicr = async (enableMicr: boolean): Promise => { + await PostOpenMicr({ + roomNum: state.channelId, + uid: user.uid, + enableMicr + }).then(res => { + getRoomUser() + }) + } + // 开关视频 + const postOpenCamera = async (enableCamera: boolean): Promise => { + await PostOpenCamera({ + roomNum: state.channelId, + uid: user.uid, + enableCamera + }).then(res => { + getRoomUser() + }) + } return ( <>
@@ -407,7 +416,7 @@ const Meeting: React.FC = () => {
{meetingContentUser(item)} - {item.isCloseCamera ? null : meetingContentError()} + {item.enableCamera ? null : meetingContentError()} )} @@ -732,7 +741,7 @@ const meetingContentUser = (item: any) => { : null}
- + {item.userName}
diff --git a/src/utils/package/signalr.ts b/src/utils/package/signalr.ts index a2c3078..f9d3591 100644 --- a/src/utils/package/signalr.ts +++ b/src/utils/package/signalr.ts @@ -19,14 +19,21 @@ export const startSignalr = () => { export const onSignalr = (callBack: Function) => { connection.on("ReceiveMessage", (uid: string, userName: string, message: string) => { callBack({ + key:'ReceiveMessage', uid, message, userName }) }); + connection.on("RefreshUserList", () => { + callBack({ + key: 'ReceiveMessage' + }) + }); + } export const onInvoke = async (str: string, data: any) => { switch (str) { case 'joinChannel': - await connection.invoke(str, data.roomNum, data.isMute, data.isCloseCamera) + await connection.invoke(str, data.roomNum, data.enableMicr, data.enableCamera) break; case 'levelChannel': await connection.invoke(str, data.roomNum)