| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, watch, onMounted } from 'vue'; |
| | | import { useRoute } from 'vue-router'; |
| | | import {ref, watch, onMounted} from 'vue'; |
| | | import {useRoute} from 'vue-router'; |
| | | import useWebScoket from "@/hooks/useWebScoket.js"; |
| | | import { storeToRefs } from 'pinia'; |
| | | import { useUserStore } from '@/store/index.js'; |
| | | import {storeToRefs} from 'pinia'; |
| | | import {useUserStore} from '@/store/index.js'; |
| | | |
| | | const route = useRoute(); |
| | | const meet = ref(null); |
| | | |
| | | const userStore = useUserStore(); |
| | | const { userInfo } = storeToRefs(userStore); |
| | | const { meetName, id, userName, userCode } = route.query; |
| | | const {userInfo} = storeToRefs(userStore); |
| | | const {meetName, id, userName, userCode} = route.query; |
| | | let jitsiApi = null; |
| | | onMounted(() => { |
| | | const width = window.innerWidth; |
| | |
| | | gravatar: { |
| | | disabled: true |
| | | }, |
| | | // 控制顶部标题会议信息标签的可见性和行为。 |
| | | // 如果标签的 ID 不在上述两个数组中的任何一个中,则它在标题上根本不可见。 |
| | | conferenceInfo: { |
| | | // 这些标签不会与工具箱一起隐藏。 |
| | | alwaysVisible: ['recording'], |
| | | // 这些标签将与工具箱按钮一起自动隐藏。 |
| | | autoHide: [ |
| | | // 'raised-hands-count', |
| | | 'subject', |
| | | 'conference-timer', |
| | | 'participants-count', |
| | | 'e2ee', |
| | | 'video-quality', |
| | | 'insecure-room', |
| | | 'highlight-moment', |
| | | 'top-panel-toggle', |
| | | ] |
| | | }, |
| | | ModeratorIndicator: true, |
| | | startSilent: true, |
| | | //禁用改名 |
| | | readOnlyName: true, |
| | | //参会者名单 |
| | |
| | | disabledDemote: false |
| | | }, |
| | | // 自定义按钮 |
| | | // 自定义按钮 |
| | | toolbarButtons: [ |
| | | // 摄像头 |
| | | 'camera', |
| | | // 聊天 |
| | | 'chat', |
| | | // 'closedcaptions', |
| | | // 共享 |
| | | 'desktop', |
| | | 'download', |
| | | // 'embedmeeting', |
| | | // 'etherpad', |
| | | // 'feedback', |
| | | // 'filmstrip', |
| | | 'fullscreen', |
| | | 'hangup', |
| | | // 'help', |
| | | 'highlight', |
| | | // 'invite', |
| | | 'linktosalesforce', |
| | | 'livestreaming', |
| | | 'microphone', |
| | | 'noisesuppression', |
| | | // 'participants-pane', |
| | | // 'profile', |
| | | // 'raisehand', |
| | | 'raisehand', |
| | | 'recording', |
| | | // 'security', |
| | | 'select-background', |
| | | 'settings', |
| | | 'shareaudio', |
| | |
| | | 'stats', |
| | | 'tileview', |
| | | 'toggle-camera', |
| | | // 'videoquality', |
| | | // 'closedcaptions', |
| | | // 'embedmeeting', |
| | | // 'etherpad', |
| | | // 'feedback', |
| | | // 'filmstrip', |
| | | // 'help', |
| | | // 'invite', |
| | | // 'participants-pane', |
| | | // 'profile', |
| | | // 'security', |
| | | 'videoquality', |
| | | 'whiteboard' |
| | | ], |
| | | // 禁用邀请 |
| | |
| | | }); |
| | | } |
| | | |
| | | const { status, message, error, connect, disconnect, sendMessage } = useWebScoket({ |
| | | const {status, message, error, connect, disconnect, sendMessage} = useWebScoket({ |
| | | url: 'ws://127.0.0.1:8000/websocket/' + userInfo._rawValue.id, |
| | | heartBeatData: 'ping' |
| | | }); |
| | | |
| | | watch( |
| | | () => message.value, |
| | | (msg) => { |
| | | console.log('msg', msg.commend); |
| | | if (msg.commend === 'kickOut') { |
| | | jitsiApi.executeCommand('hangup'); |
| | | () => message.value, |
| | | (msg) => { |
| | | console.log('msg', msg.commend); |
| | | if (msg.commend === 'kickOut') { |
| | | jitsiApi.executeCommand('hangup'); |
| | | } |
| | | if (msg.commend === 'mute') { |
| | | jitsiApi.executeCommand('toggleAudio'); |
| | | } |
| | | if (msg.commend === 'openCamera') { |
| | | jitsiApi.executeCommand('toggleVideo'); |
| | | } |
| | | } |
| | | if (msg.commend === 'mute') { |
| | | jitsiApi.executeCommand('toggleAudio'); |
| | | } |
| | | if (msg.commend === 'openCamera') { |
| | | jitsiApi.executeCommand('toggleVideo'); |
| | | } |
| | | } |
| | | ); |
| | | |
| | | |