cd electron-vite-vuenpm installnpm run dev
TUIRoom/Electron/packages/renderer/src/TUIRoom
フォルダを既存のプロジェクトのpackages/renderer/src/
ディレクトリ下にコピーします。App.vue
コンポーネントにTUIRoomコンポーネントをインポートします。<template><room ref="TUIRoomRef"></room></template><script setup lang="ts">import { ref, onMounted } from 'vue';// TUIRoomコンポーネントをインポートします。インポートパスが正しいかどうかよく確認してくださいimport Room from './TUIRoom/index.vue';// TUIRoomコンポーネント要素を取得し、TUIRoomコンポーネントの呼び出しメソッドに用いますconst TUIRoomRef = ref();onMounted(async () => {// TUIRoomコンポーネントを初期化します// キャスターはルームを作成する前にTUIRoomコンポーネントを初期化する必要があります// 一般メンバーは入室前にTUIRoomコンポーネントを初期化する必要がありますawait TUIRoomRef.value.init({// sdkAppIdを取得します。ステップ1をご参照くださいsdkAppId: 0,業務// ユーザーの業務における固有の表示IDですuserId: '',// ローカル開発デバッグの場合は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のタイプはnumberである必要があります// roomModeには'FreeSpeech'(自由発言モード) と'ApplySpeech'(挙手発言モード)の2種類があります。デフォルトでは'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のタイプはnumberである必要があります// 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
ファイルです。// 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
で、element-plusコンポーネントを必要に応じてロードするように設定しておく必要があります。// 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
をインポートするためには、コードスタイルを統一します。これを行わない場合はrequire方式でのインポートが必要になります。packages/renderer/vite.config.ts
での設定が必要です。// 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.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 | 任意入力。入室時にカメラをオンにするかどうか。デフォルトではオフ |
roomParam.isOpenMicrophone | string | 任意入力。入室時にマイクをオンにするかどうか。デフォルトではオフ |
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 | 任意入力。入室時にカメラをオンにするかどうか。デフォルトではオフ |
roomParam.isOpenMicrophone | string | 任意入力。入室時にマイクをオンにするかどうか。デフォルトではオフ |
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>
この記事はお役に立ちましたか?