1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <script setup lang='ts'>
- import type { type_dyaw_xlfw_zxhd, type_dyaw_xlfw_zxhd_log, type_archives_item } from '~/types';
- import user from '~/store/user';
- import type { TSocketRes } from '~/utils/ws';
- import { CHAT_STATUS, CHAT_OPERATION } from '~/types';
- // ==========
- // chat audio/video
- // ==========
- let RtcDialogRef = $ref<typeof import("~/components/rtc-dialog/index.vue")['default']>()
- const ws2 = createSocket(
- { teacher: user.user_id, student: '*' },
- {
- message(socketRes: TSocketRes<type_dyaw_xlfw_zxhd_log & { operate: CHAT_OPERATION }>) {
- console.info('enter message', socketRes);
- if (socketRes.from_client_name.endsWith('student')) {
- // infoList.push(socketRes.content)
- if (socketRes.content.dxzl_tea_user_id === user.user_id) {
- console.info('start publisher ')
- RtcDialogRef!.publisher(socketRes.content)
- }
- }
- }
- }
- )
- onMounted(() => {
- RtcDialogRef!.init(ws2)
- })
- function openRtcDialog(dyaw_xlfw_zxhd: type_dyaw_xlfw_zxhd, type: 'audio' | 'video') {
- RtcDialogRef!.open(dyaw_xlfw_zxhd, type)
- }
- const updateFnList = $ref<Function[]>([])
- function emitUpdateInfo(info: type_dyaw_xlfw_zxhd_log, isUpdate?: boolean) {
- updateFnList.forEach(fn => fn(info, isUpdate))
- }
- </script>
- <template>
- <RouterView @openRtcDialog="openRtcDialog" :update-fn-list="updateFnList"></RouterView>
- <rtc-dialog ref="RtcDialogRef" @update-info="emitUpdateInfo"></rtc-dialog>
- </template>
|