关闭麦克风视频

This commit is contained in:
yj 2024-07-15 17:26:08 +08:00
parent b2df36b061
commit 5d79891e7d
3 changed files with 61 additions and 31 deletions

View File

@ -38,3 +38,17 @@ export const GetRoomUser = (roomNum: string) =>
url: `/room/user?roomNum=${roomNum}`, url: `/room/user?roomNum=${roomNum}`,
method: 'get' 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
})

View File

@ -6,7 +6,7 @@ import { DeleteOutlined, LoadingOutlined, ProfileOutlined, ReloadOutlined, Searc
import { useLocation, useNavigate } from 'react-router-dom'; import { useLocation, useNavigate } from 'react-router-dom';
import { thumbImageBufferToBase64 } from '@/utils/package/base64' import { thumbImageBufferToBase64 } from '@/utils/package/base64'
import { storage } from '@/utils'; 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 axios from 'axios';
import ImageUrl from '@/utils/package/imageUrl' import ImageUrl from '@/utils/package/imageUrl'
import agora from '@/utils/package/agora' import agora from '@/utils/package/agora'
@ -158,7 +158,15 @@ const Meeting: React.FC = () => {
useEffect(() => { useEffect(() => {
onSignalr((item: any) => { 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 footerListTemplate[itemIndex][rowIndex].active = true
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
agora.muteLocalAudioStream(true) agora.muteLocalAudioStream(true)
await onInvoke('joinChannel', { postOpenMicr(false)
roomNum: state.channelId,
isMute: false,
isCloseCamera: true
})
getRoomUser()
break; break;
case '开启声音': case '开启声音':
footerListTemplate[itemIndex][rowIndex].title = '关闭声音' footerListTemplate[itemIndex][rowIndex].title = '关闭声音'
footerListTemplate[itemIndex][rowIndex].active = false footerListTemplate[itemIndex][rowIndex].active = false
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
agora.muteLocalAudioStream(false) agora.muteLocalAudioStream(false)
await onInvoke('joinChannel', { postOpenMicr(true)
roomNum: state.channelId,
isMute: true,
isCloseCamera: true
})
getRoomUser()
break; break;
case '关闭视频': case '关闭视频':
footerListTemplate[itemIndex][rowIndex].title = '开启视频' footerListTemplate[itemIndex][rowIndex].title = '开启视频'
footerListTemplate[itemIndex][rowIndex].active = true footerListTemplate[itemIndex][rowIndex].active = true
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
agora.muteLocalVideoStream(true) agora.muteLocalVideoStream(true)
await onInvoke('joinChannel', { postOpenCamera(false)
roomNum: state.channelId,
isMute: true,
isCloseCamera: false
})
getRoomUser()
break; break;
case '开启视频': case '开启视频':
footerListTemplate[itemIndex][rowIndex].title = '关闭视频' footerListTemplate[itemIndex][rowIndex].title = '关闭视频'
footerListTemplate[itemIndex][rowIndex].active = false footerListTemplate[itemIndex][rowIndex].active = false
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
agora.muteLocalVideoStream(false) agora.muteLocalVideoStream(false)
await onInvoke('joinChannel', { postOpenCamera(true)
roomNum: state.channelId,
isMute: true,
isCloseCamera: true
})
getRoomUser()
break; break;
case '设置向导': case '设置向导':
stupWizardRef.current.changeIsStupWizard() stupWizardRef.current.changeIsStupWizard()
@ -338,8 +326,8 @@ const Meeting: React.FC = () => {
if (e.value) { if (e.value) {
await onInvoke('joinChannel', { await onInvoke('joinChannel', {
roomNum: state.channelId, roomNum: state.channelId,
isMute: true, enableMicr: true,
isCloseCamera: true enableCamera: true
}) })
getRoomUser() getRoomUser()
} else { } else {
@ -370,6 +358,27 @@ const Meeting: React.FC = () => {
message.success('请输入内容!') message.success('请输入内容!')
} }
} }
// 开关麦克风
const postOpenMicr = async (enableMicr: boolean): Promise<void> => {
await PostOpenMicr({
roomNum: state.channelId,
uid: user.uid,
enableMicr
}).then(res => {
getRoomUser()
})
}
// 开关视频
const postOpenCamera = async (enableCamera: boolean): Promise<void> => {
await PostOpenCamera({
roomNum: state.channelId,
uid: user.uid,
enableCamera
}).then(res => {
getRoomUser()
})
}
return ( return (
<> <>
<div className={styles.meeting}> <div className={styles.meeting}>
@ -407,7 +416,7 @@ const Meeting: React.FC = () => {
</div> </div>
</div> </div>
{meetingContentUser(item)} {meetingContentUser(item)}
{item.isCloseCamera ? null : meetingContentError()} {item.enableCamera ? null : meetingContentError()}
</div> </div>
)} )}
</div> </div>
@ -732,7 +741,7 @@ const meetingContentUser = (item: any) => {
<img src={ImageUrl.icon32} alt="" /> <img src={ImageUrl.icon32} alt="" />
</div> : null} </div> : null}
<div className={styles.meetingContentUserName}> <div className={styles.meetingContentUserName}>
<img src={item.isMute ? ImageUrl.icon22 : ImageUrl.icon22Active} alt="" /> <img src={item.enableMicr ? ImageUrl.icon22 : ImageUrl.icon22Active} alt="" />
<span>{item.userName}</span> <span>{item.userName}</span>
</div> </div>
</div> </div>

View File

@ -19,14 +19,21 @@ export const startSignalr = () => {
export const onSignalr = (callBack: Function) => { export const onSignalr = (callBack: Function) => {
connection.on("ReceiveMessage", (uid: string, userName: string, message: string) => { connection.on("ReceiveMessage", (uid: string, userName: string, message: string) => {
callBack({ callBack({
key:'ReceiveMessage',
uid, message, userName uid, message, userName
}) })
}); });
connection.on("RefreshUserList", () => {
callBack({
key: 'ReceiveMessage'
})
});
} }
export const onInvoke = async (str: string, data: any) => { export const onInvoke = async (str: string, data: any) => {
switch (str) { switch (str) {
case 'joinChannel': case 'joinChannel':
await connection.invoke(str, data.roomNum, data.isMute, data.isCloseCamera) await connection.invoke(str, data.roomNum, data.enableMicr, data.enableCamera)
break; break;
case 'levelChannel': case 'levelChannel':
await connection.invoke(str, data.roomNum) await connection.invoke(str, data.roomNum)