iframe 方式快速将 TUIRoomKit 的音视频会议能力集成到您的 Web 应用中。这种方式具有良好的环境隔离性,开发者无需关注复杂的 UI 组件逻辑,仅需通过 URL 参数传递关键信息即可实现视频会议功能。
SDKAppID 完成计费统计。iframe 嵌入的 TUIRoomKit 项目。npm create vite@latest roomkit-vue3 -- --template vue
pnpm create vite roomkit-vue3 --template vue
yarn create vite roomkit-vue3 --template vue
cd roomkit-vue3/npm install @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
cd roomkit-vue3/pnpm install @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
cd roomkit-vue3/yarn add @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
roomkit-vue3/src/App.vue 文件。<template><UIKitProvider theme="light" language="zh-CN"><ConferenceMainView v-if="isPC"></ConferenceMainView><ConferenceMainViewH5 v-else></ConferenceMainViewH5></UIKitProvider></template><script setup>import { ref, onMounted } from 'vue';import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';import { ConferenceMainView, ConferenceMainViewH5, conference } from '@tencentcloud/roomkit-web-vue3';import { getPlatform } from '@tencentcloud/universal-api';import { RoomType } from 'tuikit-atomicx-vue3/room';const isPC = ref(getPlatform() === 'pc');function getUrlParam(key) {const params = new URLSearchParams(window.location.search);return params.get(key) || '';}const sdkAppId = Number(getUrlParam('sdkAppId'));const userId = getUrlParam('userId');const userSig = getUrlParam('userSig');const roomId = getUrlParam('roomId');const action = getUrlParam('action') || 'start';onMounted(async () => {try {await conference.login({ sdkAppId, userId, userSig });if (action === 'start') {await conference.start({ roomId, roomType: RoomType.Standard });} else {await conference.join({ roomId, roomType: RoomType.Standard });}} catch (error) {console.error('初始化失败:', error);}});</script><style>html, body {padding: 0 !important;margin: 0 !important;}#app {width: 100% !important;height: 100% !important;padding: 0 !important;margin: 0 !important;max-width: 100% !important;max-height: 100% !important;text-align: left !important;overflow: hidden;}</style>
cd roomkit-vue3/npm run build
<iframe> 标签并绑定 src 属性为您部署的 TUIRoomKit 页面地址。start,加入房间传 join。<iframeid="tuiRoomFrame"src="https://your-domain.com/index.html?sdkAppId=xxxx&userId=xxxx&userSig=xxxx&roomId=xxxx&action=start"allow="microphone; camera; fullscreen; display-capture;"width="100%"height="100%"style="border: none; min-height: 600px;"></iframe>
postMessage 机制向父页面发送消息。// 在 TUIRoomKit 接入项目中发送事件import { useRoomState, RoomEvent } from 'tuikit-atomicx-vue3/room';const { subscribeEvent } = useRoomState();subscribeEvent(RoomEvent.onRoomEnded, () => {window.parent.postMessage({ event: 'onRoomEnded', data: {} }, '*');});// 在您的父页面中接收事件window.addEventListener('message', (event) => {if (event.data.event === 'onRoomEnded') {console.log('房间已解散');}});
检查项目 | 验证标准 |
页面加载 | iframe 区域正常渲染出 TUIRoomKit 会议界面。 |
音视频权限 | 尝试在会议界面内点击“取消静音”或“打开视频”,确认状态图标切换正常。 |
屏幕分享 | 点击屏幕分享,确认能够弹出系统级分享窗口。 |
iframe 地址都是 https://。 <iframe> 标签包含 allow="microphone; camera; fullscreen; display-capture;"。// 请在进房前设置内网代理参数import TUIRoomEngine from '@tencentcloud/tuiroom-engine-js';import { useRoomEngine } from 'tuikit-atomicx-vue3/room';const { roomEngine } = useRoomEngine();TUIRoomEngine.once('ready', () => {const trtcCloud = roomEngine.instance?.getTRTCCloud();trtcCloud.callExperimentalAPI(JSON.stringify({api: 'setNetworkProxy',params: {websocketProxy: "wss://proxy.example.com/ws/",turnServer: [{url: '14.3.3.3:3478',username: 'turn',credential: 'turn',}],iceTransportPolicy: 'relay',},}));});
文档反馈