



cd electron-vite-vuenpm installnpm run dev
TUIRoom/Electron/packages/renderer/src/TUIRoom 폴더를 프로젝트의 packages/renderer/src/에 복사합니다.<template><room ref="TUIRoomRef"></room></template><script setup lang="ts">import { ref, onMounted } from 'vue';// TUIRoom 컴포넌트를 가져옵니다. 올바른 가져오기 경로를 사용해야 함import Room from './TUIRoom/index.vue';// 컴포넌트의 메소드를 호출하는 데 사용되는 TUIRoom 컴포넌트 요소 가져오기const TUIRoomRef = ref();onMounted(async () => {// TUIRoom 컴포넌트 초기화// 호스트는 방을 만들기 전에 TUIRoom 컴포넌트를 초기화해야 함// 참석자는 방에 들어가기 전에 TUIRoom 컴포넌트를 초기화해야 함await TUIRoomRef.value.init({// sdkAppId 가져오기(1단계 참고)sdkAppId: 0,// 귀하의 비즈니스에서 사용자의 고유 IduserId: '',// 로컬 개발 및 디버깅을 위해 https://console.tencentcloud.com/trtc/usersigtool 에서 userSig를 빠르게 생성할 수 있습니다. userSig 와 userId는 일대일 대응 관계임userSig: '',// 귀하의 비즈니스에서 사용자의 사용자 이름userName: '',// 비즈니스에 있는 사용자의 프로필 사진에 연결userAvatar: '',// 화면 공유에 사용되는 사용자의 고유 Id입니다. shareUserId = `share_${userId}`여야 합니다. 화면 공유 기능이 필요하지 않은 경우 이 매개변수 불필요shareUserId: '',// 이 문서의 1단계 > 3단계를 참고하여 sdkAppId 및 shareUserId 를 사용하여 shareUserSig 발행shareUserSig: '',})// 기본적으로 방이 생성됩니다. 실제 연결 시 필요에 따라 handleCreateRoom 메소드를 실행할 수 있음await handleCreateRoom();})// 호스트가 방을 만듭니다. 이 메소드는 방을 생성할 때만 호출됨async function handleCreateRoom() {// roomId는 사용자가 입력한 roomId로 숫자여야 함// roomMode에는 ‘FreeSpeech’(자유롭게 말하기) 및 ‘ApplySpeech’(손 들고 말하기) 포함, 기본값은 ‘FreeSpeech’이며 현재 유일하게 지원되는 모드임// roomParam은 방에 들어가는 사용자의 기본 동작을 지정함(기본적으로 마이크를 켤지 여부, 기본적으로 카메라를 켤지 여부, 기본 미디어 장치 Id)const roomId = 123456;const roomMode = 'FreeSpeech';const roomParam = {isOpenCamera: true,isOpenMicrophone: true,}await TUIRoomRef.value.createRoom(roomId, roomMode, roomParam);}// 참석자 방 입장. 이 메소드는 참석자가 생성된 방에 들어갈 때 호출됨async function handleEnterRoom() {// roomId는 사용자가 입력한 roomId로 숫자여야 함// roomParam은 방에 들어가는 사용자의 기본 동작을 지정함(기본적으로 마이크를 켤지 여부, 기본적으로 카메라를 켤지 여부, 기본 미디어 장치 Id)const roomId = 123456;const roomParam = {isOpenCamera: true,isOpenMicrophone: true,}await TUIRoomRef.value.enterRoom(roomId, roomParam);}</script><style>html, body {width: 100%;height: 100%;margin: 0;}#app {width: 100%;height: 100%;}</style>
npm install sass typescript unplugin-auto-import unplugin-vue-components -S -D
npm install element-plus events mitt pinia trtc-electron-sdk tim-js-sdk tsignaling -S
packages/renderer/src/main.ts에 Pinia를 등록해야 합니다.// src/main.ts 파일import { createPinia } from 'pinia';const app = createApp(App);// Pinia 등록createApp(App).use(createPinia()).mount('#app').$nextTick(window.removeLoading)
packages/renderer/vite.config.ts에서 구성해야 합니다.// vite.config.tsimport AutoImport from 'unplugin-auto-import/vite';import Components from 'unplugin-vue-components/vite';import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';const path = require('path');export default defineConfig({// ...plugins: [AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver({importStyle: 'sass',})],}),],css: {preprocessorOptions: {scss: {additionalData: `@use '${path.resolve(__dirname, 'src/TUIRoom/assets/style/element.scss')}' as *;`,},},},});
// src/main.tsimport 'element-plus/theme-chalk/el-message.css'import 'element-plus/theme-chalk/el-message-box.css'
trtc-electron-sdk를 가져오려면 packages/renderer/vite.config.ts를 다음과 같이 구성해야 합니다(그렇지 않으면 require 문을 사용해야 함).// vite.config.tsexport default defineConfig({// ...plugins: [resolve({"trtc-electron-sdk": `const TRTCCloud = require("trtc-electron-sdk");const TRTCParams = TRTCCloud.TRTCParams;const TRTCAppScene = TRTCCloud.TRTCAppScene;const TRTCVideoStreamType = TRTCCloud.TRTCVideoStreamType;const TRTCScreenCaptureSourceType = TRTCCloud.TRTCScreenCaptureSourceType;const TRTCVideoEncParam = TRTCCloud.TRTCVideoEncParam;const Rect = TRTCCloud.Rect;const TRTCAudioQuality = TRTCCloud.TRTCAudioQuality;const TRTCScreenCaptureSourceInfo = TRTCCloud.TRTCScreenCaptureSourceInfo;const TRTCDeviceInfo = TRTCCloud.TRTCDeviceInfo;const TRTCVideoQosPreference = TRTCCloud.TRTCVideoQosPreference;const TRTCQualityInfo = TRTCCloud.TRTCQualityInfo;const TRTCStatistics = TRTCCloud.TRTCStatistics;const TRTCVolumeInfo = TRTCCloud.TRTCVolumeInfo;const TRTCDeviceType = TRTCCloud.TRTCDeviceType;const TRTCDeviceState = TRTCCloud.TRTCDeviceState;const TRTCBeautyStyle = TRTCCloud.TRTCBeautyStyle;const TRTCVideoResolution = TRTCCloud.TRTCVideoResolution;const TRTCVideoResolutionMode = TRTCCloud.TRTCVideoResolutionMode;const TRTCVideoMirrorType = TRTCCloud.TRTCVideoMirrorType;const TRTCVideoRotation = TRTCCloud.TRTCVideoRotation;const TRTCVideoFillMode = TRTCCloud.TRTCVideoFillMode;export {TRTCParams,TRTCAppScene,TRTCVideoStreamType,TRTCScreenCaptureSourceType,TRTCVideoEncParam,Rect,TRTCAudioQuality,TRTCScreenCaptureSourceInfo,TRTCDeviceInfo,TRTCVideoQosPreference,TRTCQualityInfo,TRTCStatistics,TRTCVolumeInfo,TRTCDeviceType,TRTCDeviceState,TRTCBeautyStyle,TRTCVideoResolution,TRTCVideoResolutionMode,TRTCVideoMirrorType,TRTCVideoRotation,TRTCVideoFillMode,};export default TRTCCloud.default;`,}),]// ...});
packages/renderer/src/env.d.ts에서 env.d.ts 파일을 다음과 같이 구성합니다.// env.d.tsdeclare module 'tsignaling/tsignaling-js' {import TSignaling from 'tsignaling/tsignaling-js';export default TSignaling;}declare module 'tim-js-sdk' {import TIM from 'tim-js-sdk';export default TIM;}
packages/renderer/vite.config.ts의 구성을 다음과 같이 수정합니다.// vite.config.tsexport default defineConfig({// ...build: {rollupOptions: {output: {format: 'es'}}},});
npm run dev
release 디렉터리에 설치 프로그램을 생성합니다.npm run build
TUIRoomRef.value.init(roomData);
매개변수 | 유형 | 의미 |
roomData | object | |
roomData.sdkAppId | number | 고객 SDKAppId |
roomData.userId | string | 사용자 고유 ID |
roomData.userSig | string | 사용자 UserSig |
roomData.userName | string | 사용자 닉네임 |
roomData.userAvatar | string | 사용자 프로필 |
roomData.shareUserId | string | 선택 사항, 화면 공유에 사용되는 UserId, shareUserId = share_${userId}여야 하며, 화면 공유 기능이 없는 경우 불필요 |
roomData.shareUserSig | string | 선택 사항, 화면 공유에 사용되는 UserSig |
TUIRoomRef.value.createRoom(roomId, roomMode, roomParam);
매개변수 | 유형 | 의미 |
roomId | number | 방 ID |
roomMode | string | ‘FreeSpeech’(자유롭게 말하기) 및 ‘ApplySpeech’(손 들고 말하기)를 포함한 방 모드, 기본값은 ‘FreeSpeech’이며 현재 유일하게 지원되는 모드임 |
roomParam | Object | 선택 사항 |
roomParam.isOpenCamera | string | 선택 사항, 방에 입장할 때 카메라 켜기 여부, 기본값은 No |
roomParam.isOpenMicrophone | string | 선택 사항, 방 입장 시 마이크 켜기 여부, 기본값은 No |
roomParam.defaultCameraId | string | 선택 사항, 기본 카메라의 ID |
roomParam.defaultMicrophoneId | string | 선택 사항, 기본 마이크의 ID |
roomParam.defaultSpeakerId | String | 선택 사항, 기본 스피커의 ID |
TUIRoomRef.value.enterRoom(roomId, roomParam);
매개변수 | 유형 | 의미 |
roomId | number | 방 ID |
roomParam | Object | 선택 사항 |
roomParam.isOpenCamera | string | 선택 사항, 방에 입장할 때 카메라 켜기 여부, 기본값은 No |
roomParam.isOpenMicrophone | string | 선택 사항, 방 입장 시 마이크 켜기 여부, 기본값은 No |
roomParam.defaultCameraId | string | 선택 사항, 기본 카메라의 ID |
roomParam.defaultMicrophoneId | string | 선택 사항, 기본 마이크의 ID |
roomParam.defaultSpeakerId | String | 선택 사항, 기본 스피커의 ID |
<template><room ref="TUIRoomRef" @on-room-create="handleRoomCreate"></room></template><script setup lang="ts">// TUIRoom 컴포넌트를 가져옵니다. 올바른 가져오기 경로를 사용해야 함import Room from './TUIRoom/index.vue';function handleRoomCreate(info) {if (info.code === 0) {console.log(‘방 생성 완료’)}}</script>
<template><room ref="TUIRoomRef" @on-room-enter="handleRoomEnter"></room></template><script setup lang="ts">// TUIRoom 컴포넌트를 가져옵니다. 올바른 가져오기 경로를 사용해야 함import Room from './TUIRoom/index.vue';function handleRoomEnter(info) {if (info.code === 0) {console.log(‘방 입장 완료’)}}</script>
<template><room ref="TUIRoomRef" @on-room-destory="handleRoomDestory"></room></template><script setup lang="ts">// TUIRoom 컴포넌트를 가져옵니다. 올바른 가져오기 경로를 사용해야 함import Room from './TUIRoom/index.vue';function handleRoomDestory(info) {if (info.code === 0) {console.log(‘호스트가 방 종료 완료’)}}</script>
<template><room ref="TUIRoomRef" @on-room-exit="handleRoomExit"></room></template><script setup lang="ts">// TUIRoom 컴포넌트를 가져옵니다. 올바른 가져오기 경로를 사용해야 함import Room from './TUIRoom/index.vue';function handleRoomExit(info) {if (info.code === 0) {console.log(‘참석자 방 퇴장 완료’)}}</script>
피드백