帮你快速理解、总结文档立即下载

Web&H5 (Vue3)

最近更新时间:2026-07-24 09:40:16

我的收藏
本文档介绍如何在 Vue 3 业务项目中集成 TUIRoomKit,快速获得开箱即用的多人音视频会议能力。



前提条件

开通服务

请参考 开通服务 领取 TUIRoomKit 体验版或开通 TUIRoomKit 正式版,并在 应用管理 页面获取以下信息:
SDKAppID:应用标识,腾讯云基于 SDKAppID 完成计费统计。
SDKSecretKey:应用密钥,用于本地调试时生成 UserSig。

环境准备

Node.js: ≥ 18.19.1 (推荐使用官方 LTS 版本)。
浏览器:推荐使用最新版 Chrome,或其他支持 WebRTC API 的浏览器。
媒体设备:建议配备摄像头、麦克风和扬声器。缺少相应设备时仍可入会,但对应音视频能力不可用。

准备 Vue3 项目

若您尚未创建 Vue 3 项目,可先执行以下命令初始化;若已有 Vue 3 项目,可跳过本节。
# 创建名为 roomkit-demo 的 Vue3 + TypeScript 项目
npm create vite@5 roomkit-demo -- --template vue-ts
# 进入项目目录
cd roomkit-demo
# 安装基础依赖
npm install

快速接入

完成前提条件后,按以下步骤在 Vue 3 项目中快速完成 TUIRoomKit 接入,并体验会中能力。

步骤1:安装 SDK 依赖

在您的业务项目中安装以下依赖。
npm
pnpm
yarn
npm install @tencentcloud/roomkit-web-vue3 tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
pnpm install @tencentcloud/roomkit-web-vue3 tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
yarn add @tencentcloud/roomkit-web-vue3 tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api

步骤2:集成会中界面

将以下示例代码复制至 src/App.vue,并根据控制台信息替换 SDKAppIDSDKSecretKey
注意
快速接入示例采用客户端生成 UserSig 的方式,仅可用于本地开发调试。正式环境请改为由业务服务端生成 UserSig,详见 正式运行阶段如何计算 UserSig
<template>
<UIKitProvider theme="light" language="zh-CN">
<ConferenceMainView v-if="inRoom && isPC" />
<ConferenceMainViewH5 v-else-if="inRoom" />
<div v-else class="entry">
<TUIInput v-model="entry.userId" placeholder="请输入用户 ID" />
<TUIInput v-model="entry.userName" placeholder="请输入昵称, 非必填" />
<TUIInput v-model="entry.roomId" placeholder="请输入房间 ID, 如 room_123456" />
<TUIButton type="primary" :disabled="!entry.userId || !entry.roomId" @click="handleEnterRoom">进入会议</TUIButton>
</div>
</UIKitProvider>
</template>

<script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue';
import { UIKitProvider, TUIInput, TUIButton, TUIToast } from '@tencentcloud/uikit-base-component-vue3';
import { conference, ConferenceMainView, ConferenceMainViewH5, RoomEvent, genTestUserSig } from '@tencentcloud/roomkit-web-vue3';
import { getPlatform } from '@tencentcloud/universal-api';

const SDKAppID = 0; // 替换为您在开通服务阶段获取的 SDKAppID
const SDKSecretKey = ''; // 替换为您在开通服务阶段获取的 SDKSecretKey

const isPC = getPlatform() === 'pc';
const inRoom = ref(false);
const stored = JSON.parse(sessionStorage.getItem('tuiRoom-entry') || '{}');
const entry = ref({ userId: stored.userId || '', userName: stored.userName || '', roomId: stored.roomId || '' });

const handleEnterRoom = async () => {
sessionStorage.setItem('tuiRoom-entry', JSON.stringify(entry.value));
if (!SDKAppID || !SDKSecretKey) {
TUIToast.warning({ message: '请先在代码中配置 SDKAppID 和 SDKSecretKey' });
return;
}
try {
const { userSig } = genTestUserSig({ userId: entry.value.userId, sdkAppId: SDKAppID, secretKey: SDKSecretKey });
await conference.login({ sdkAppId: SDKAppID, userId: entry.value.userId, userSig });
await conference.setSelfInfo({ userName: entry.value.userName, avatarUrl: '' });
await conference.createAndJoinRoom({ roomId: entry.value.roomId, options: { roomName: `${entry.value.userName || entry.value.userId} 的会议` } });
inRoom.value = true;
} catch (error) {
console.error('进入会议失败:', error);
}
};

const handleLeave = () => { inRoom.value = false; };

onMounted(() => {
conference.on(RoomEvent.ROOM_LEAVE, handleLeave);
conference.on(RoomEvent.ROOM_DISMISS, handleLeave);
});

onUnmounted(() => {
conference.off(RoomEvent.ROOM_LEAVE, handleLeave);
conference.off(RoomEvent.ROOM_DISMISS, handleLeave);
});
</script>

<style>
html, body, #app { width: 100%; height: 100%; max-width: 100%; max-height: 100%; margin: 0; padding: 0; }
.entry { display: flex; flex-direction: column; gap: 12px; align-items: center; justify-content: center; height: 100vh; width: 260px; margin: 0 auto; }
</style>

步骤3:启动并验证

npm
pnpm
yarn
npm run dev
pnpm run dev
yarn run dev
启动成功后,在浏览器访问本地调试地址(通常为 http://localhost:5173),填写用户 ID 与房间号,点击 进入会议,即可进入 TUIRoomKit 会中界面。
验证多人会议:建议打开两个浏览器标签页,分别模拟不同用户进入同一房间,验证音视频互通与会中功能。操作步骤如下:
步骤1:打开两个浏览器标签页,分别填写用户 ID userAuserB 及相同房间号 room_123456,点击 进入会议userA 先进入时将自动创建房间并成为房主;userB 后进入时将作为参会者加入。
测试用户 A
测试用户 B


步骤2:测试用户均进入会中界面后,可在成员列表中互相看到对方;开启摄像头、麦克风,确认能否看到彼此的画面并听到声音。
测试用户 A
测试用户 B


步骤3:您还可以体验屏幕共享、聊天、成员管理等会中能力,确认多人场景下的基础功能正常。

接入详解

快速接入章节以一体化示例帮助您完成首次进房体验。若需将会议能力集成至实际业务,可按会议流程分步集成。本节依次介绍 SDK 依赖安装、TUIRoomKit 组件引用、登录鉴权、创建与加入会议、离开会议、监听会议状态等核心能力的用法。
推荐使用更高效的 AI 集成助手
我们为您提供 AI 集成助手:描述业务需求即可自动生成集成代码;接入过程中遇到问题,也可向 AI 咨询答疑。点击这里,立即体验 AI 集成

步骤1:安装 SDK 依赖

在您的业务项目中安装 TUIRoomKit 及配套依赖包。
npm
pnpm
yarn
npm install @tencentcloud/roomkit-web-vue3 tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
pnpm install @tencentcloud/roomkit-web-vue3 tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
yarn add @tencentcloud/roomkit-web-vue3 tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api

步骤2:引用 TUIRoomKit 组件

TUIRoomKit 提供 Web 桌面端与 H5 移动端两套会中完整界面组件,均从 @tencentcloud/roomkit-web-vue3 导出。根据终端类型按需引用:
ConferenceMainView:面向 Web 桌面端,提供九宫格 / 侧边栏 / 顶部栏等视频布局,内置摄像头、麦克风、屏幕共享、成员管理、聊天、邀请入会等完整会中能力。
ConferenceMainViewH5:面向 H5 移动端,采用移动端专属布局与交互,支持摄像头、麦克风、成员列表、聊天等核心会中能力,适配手机浏览器场景。
组件须包裹在 UIKitProvider 内,并通过 getPlatform() 区分 Web 与 H5 终端后按需渲染:
<template>
<UIKitProvider theme="light" language="zh-CN">
<ConferenceMainView v-if="isPC"></ConferenceMainView>
<ConferenceMainViewH5 v-else></ConferenceMainViewH5>
</UIKitProvider>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
import { ConferenceMainView, ConferenceMainViewH5 } from '@tencentcloud/roomkit-web-vue3';
import { getPlatform } from '@tencentcloud/universal-api';

const isPC = ref(getPlatform() === 'pc');
</script>

步骤3:登录

本节介绍 TUIRoomKit 登录的实践教程。推荐在用户完成业务侧 Web 登录鉴权后,由业务服务端签发 UserSig 并下发至客户端,再依次调用 conference.loginconference.setSelfInfo,完成 TUIRoomKit 鉴权并配置会中展示信息。
注意
UserSig 是 TUIRoomKit 登录的核心凭证。生产环境必须由业务服务端生成 UserSig,客户端在需要时向业务服务器请求获取,切勿在客户端硬编码 SDKSecretKey。本地开发调试时,可使用 @tencentcloud/roomkit-web-vue3 提供的 genTestUserSig 生成临时 UserSig,仅用于本地验证,不可用于生产环境。详见 正式运行阶段如何计算 UserSig
import { onMounted } from 'vue';
import { conference } from '@tencentcloud/roomkit-web-vue3';

const SDKAppID = 0; // 控制台获取的 SDKAppID
const userId = 'your_user_id'; // 业务侧用户唯一标识
const userSig = 'your_user_sig'; // 由业务服务端签发并下发
const userName = 'your_user_name';

onMounted(async () => {
try {
await conference.login({ sdkAppId: SDKAppID, userId, userSig });
await conference.setSelfInfo({
userName,
avatarUrl: 'https://your-avatar-url.com/image.png',
});
} catch (error) {
console.error('TUIRoomKit 登录失败:', error);
}
});

登录与进房分属不同路由时,如何监听登录状态?

若登录页与进房页为独立路由,进房页加载时 conference.login 可能尚未执行完毕。可通过 watch 监听 loginUserInfo.value?.userId:该字段非空时表示 TUIRoomKit 已完成登录,再执行进房逻辑。
import { watch } from 'vue';
import { useLoginState } from 'tuikit-atomicx-vue3/room';
import { conference } from '@tencentcloud/roomkit-web-vue3';

const { loginUserInfo } = useLoginState();

watch(() => loginUserInfo.value?.userId, async (userId) => {
if (userId) {
await conference.createAndJoinRoom({ roomId: '123456' });
}
}, { immediate: true });

步骤4:创建会议

创建会议所需的房间号(roomId)是会议的核心标识,由您的业务系统自行生成并维护(需保证全局唯一)。请根据实际业务场景,选择以下创建方式:

场景一:客户端发起快速会议

适用场景:用户在客户端点击“快速会议”,需要立即创建房间并加入(如临时沟通、IM 聊天内发起会议)。
实现方式:由客户端生成或向业务后台申请一个唯一的房间号,随后由发起人调用 conference.createAndJoinRoom 创建并直接进入该房间。
import { conference } from '@tencentcloud/roomkit-web-vue3';

const startQuickMeeting = async () => {
// 1. 客户端生成一个唯一的 roomId
const myRoomId = `room_${Date.now()}`;
// 2. 建房并直接加入
await conference.createAndJoinRoom({
roomId: myRoomId,
options: {
roomName: '我的快速会议',
},
});
};

场景二:客户端预约会议

适用场景:适用于需要在未来特定时间召开的会议(如团队周会、线上培训等)。用户可在客户端提前设定会议标题、时间及受邀参会成员。
实现方式:由客户端生成或向业务后台申请一个唯一的房间号,并配合会议时间等参数调用 scheduleRoom 接口提交预定。预定成功后,会议信息将同步至参与者的会议列表中。更多客户端预订会议能力请参考 无 UI 集成 > 预订房间
import { useRoomState } from 'tuikit-atomicx-vue3/room';

const { scheduleRoom } = useRoomState();

const createSchedule = async () => {
try {
// roomId 限制:字符串类型,必传参数,建议由业务后台生成保证 roomId 唯一性。
const roomId = '123456';
// 注意:时间戳单位必须为 **秒** (Date.getTime() 获取的是毫秒,需除以 1000)
const startTime = Math.floor(new Date().getTime() / 1000) + 3600; // 1小时后开始
const duration = 1800; // 30分钟

const options = {
roomName: '产品需求评审会',
scheduleStartTime: startTime, // 单位:秒
scheduleEndTime: startTime + duration, // 单位:秒
scheduleAttendees: ['userA', 'userB'], // 邀请参会成员ID列表
password: '123', // 可选:设置入会密码
};

await scheduleRoom({ roomId, options });
} catch (error) {
console.error('预定失败', error);
}
};

场景三:服务端创建会议

适用场景:政务、医疗、大型企业 OA 等强管控场景。
实现方式:会议的创建动作完全由您的业务服务端发起,调用腾讯云的 服务端 REST API 创建房间
POST /v4/room_engine_http_srv/create_room
{
"roomId": "your-room-id",
"roomName": "会议名称",
"startTime": 1710000000,
"endTime": 1710003600,
"invitees": ["userId1", "userId2"]
}

步骤5:加入会议

参会成员加入房间时,请根据业务情况选择适合的加入房间的方式。

场景一:房间已存在,已知 roomId 直接加入

适用场景:房间已经被发起人或服务端明确创建,参会人收到了发起人分享的房间号或者会议邀请链接。
实现方式:参会人输入房间号,或通过邀请链接解析出 roomId 后,调用 conference.joinRoom 加入会议。
import { conference } from '@tencentcloud/roomkit-web-vue3';

const joinExistingMeeting = async (sharedRoomId: string) => {
await conference.joinRoom({
roomId: sharedRoomId,
});
};

场景二:从房间列表加入会议

适用场景:适用于已通过“客户端预约”或“服务端创建”的会议。用户可进入“会议列表”页面,查看自己预定或受邀参与的会议,并快速点击加入。
实现方式:通过 useRoomState 提供的 getScheduledRoomList 接口拉取当前用户的预约会议列表并渲染至界面;用户点击目标会议后,获取对应 roomId 并调用 conference.joinRoom 进房。
<template>
<div>
<h3>我的预约会议</h3>
<ul v-if="roomList.length > 0">
<li v-for="room in roomList" :key="room.roomId" class="item">
<div class="info">
<b>{{ room.roomName || '未命名会议' }}</b>
<span>房间号: {{ room.roomId }}</span>
</div>
<button class="btn" @click="handleJoinRoom(room.roomId)">加入会议</button>
</li>
</ul>
<div v-else>暂无待参加的预约会议</div>
</div>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue';
import { conference } from '@tencentcloud/roomkit-web-vue3';
import { useRoomState, useLoginState } from 'tuikit-atomicx-vue3/room';

const { getScheduledRoomList } = useRoomState();
const { loginUserInfo } = useLoginState();
const roomList = ref<any[]>([]);

// 1. 监听登录状态,确保鉴权就绪后再拉取会议列表
watch(
() => loginUserInfo.value?.userId,
async (userId) => {
if (userId) {
try {
roomList.value = await getScheduledRoomList() || [];
} catch (error) {
console.error('获取预约会议列表失败:', error);
}
}
},
{ immediate: true }
);

// 2. 点击加入房间
const handleJoinRoom = async (roomId: string) => {
try {
await conference.joinRoom({ roomId });
} catch (error) {
console.error(`加入会议失败 (${roomId}):`, error);
}
};
</script>

<style scoped>
/* 极简基础样式 */
ul { padding: 0; list-style: none; }
.item { display: flex; justify-content: space-between; padding: 10px; border-bottom: 1px solid #eee; }
.info { display: flex; flex-direction: column; font-size: 14px; color: #666; }
.info b { font-size: 16px; color: #333; }
.btn { background: #006eff; color: #fff; border: none; padding: 6px 12px; border-radius: 4px; cursor: pointer; }
</style>

场景三:不确定房间是否已存在,需要直接进入

适用场景:双向对等发起的场景(如在线问诊、1v1 视频客服)。无法预先确定房间是否已创建。
实现方式:双方统一使用共知的业务单据号(如订单号)作为 roomId,并统一调用 conference.createAndJoinRoom 加入房间。
import { conference } from '@tencentcloud/roomkit-web-vue3';

const enterDualMeeting = async (bizOrderId: string) => {
// 双方无需判断房间是否已经创建 SDK 内部自动处理建房与进房逻辑
await conference.createAndJoinRoom({
roomId: bizOrderId,
options: {
roomName: `业务沟通:${bizOrderId}`,
},
});
};
说明:
conference.createAndJoinRoom 内部封装了“房间不存在则创建并成为房主,已存在则加入并成为参会者”的逻辑,适用于双方对等发起的进房场景。

步骤6:离开与解散房间

TUIRoomKit 已在界面上内置离开与解散房间功能,用户可直接点击 离开房间解散房间 完成操作。
如需在业务代码中主动触发离开或解散,可调用以下接口。

场景一:主动离开房间

参与者和房主均可调用 leaveRoom() 离开会议,调用后不影响其他成员,房间继续存在。
import { conference } from '@tencentcloud/roomkit-web-vue3';

await conference.leaveRoom();
说明
房主离开房间或关闭网页,不会自动解散房间,其他参会成员可继续正常使用 TUIRoomKit 能力,系统会在会议结束时间后 6 小时、且房间内人数为 0 时自动回收房间资源。

场景二:主动解散房间

房主调用 endRoom() 后,房间内所有成员均会收到房间已解散的通知。
import { conference } from '@tencentcloud/roomkit-web-vue3';

await conference.endRoom();
注意
endRoom() 必须由房主在成功进入房间后才能调用。非房主身份或在尚未进入房间的状态下调用会报错。

步骤7:监听房间状态

在音视频会议场景中,房间状态可能因房主解散、账号在其他设备登录或网络异常等原因发生变化。
TUIRoomKit 会自动处理底层音视频资源释放与界面提示,但页面路由跳转需由业务层接管。建议您在会议组件 onMounted 时注册状态监听,并在 onUnmounted 时移除监听。
<template>
<ConferenceMainView></ConferenceMainView>
</template>


<script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue';
import { ConferenceMainView, conference, RoomEvent } from '@tencentcloud/roomkit-web-vue3';

const backToHome = () => {};
const backToLogin = () => {};

onMounted(() => {
conference.on(RoomEvent.ROOM_DISMISS, backToHome);
conference.on(RoomEvent.ROOM_LEAVE, backToHome);
conference.on(RoomEvent.ROOM_ERROR, backToHome);
conference.on(RoomEvent.KICKED_OUT, backToHome);
conference.on(RoomEvent.KICKED_OFFLINE, backToLogin);
conference.on(RoomEvent.USER_SIG_EXPIRED, backToLogin);
});

onUnmounted(() => {
conference.off(RoomEvent.ROOM_DISMISS, backToHome);
conference.off(RoomEvent.ROOM_LEAVE, backToHome);
conference.off(RoomEvent.ROOM_ERROR, backToHome);
conference.off(RoomEvent.KICKED_OUT, backToHome);
conference.off(RoomEvent.KICKED_OFFLINE, backToLogin);
conference.off(RoomEvent.USER_SIG_EXPIRED, backToLogin);
});
</script>
事件
触发时机
推荐处理
RoomEvent.ROOM_DISMISS
房间被解散,对所有成员触发
返回首页或会议列表
RoomEvent.ROOM_LEAVE
用户点击 TUIRoomKit 界面上的「离开」按钮
返回首页或会议列表
RoomEvent.ROOM_ERROR
进房失败或房间内发生未处理的错误
返回首页或会议列表
RoomEvent.KICKED_OUT
被房主踢出房间
返回首页或会议列表
RoomEvent.KICKED_OFFLINE
同一账号在其他设备登录,当前设备被强制下线
跳转登录页
RoomEvent.USER_SIG_EXPIRED
UserSig 已过期
跳转登录页

下一步

在完成基础集成后,您可以根据业务需求进一步定制 UI 界面。

配置主题及语言

通过配置 App.vueUIKitProvider 的入参,修改主题及语言的默认值。更多自定义主题及语言请参考 UI 自定义 > 主题及语言
UIKitProvider 参数
可选值
默认值
theme
"light" | "dark"
"light"
language
"zh-CN" | "en-US"
"en-US"
<UIKitProvider theme="light" language="zh-CN">
<ConferenceMainView v-if="stage === 'room' && isPC" />
<ConferenceMainViewH5 v-else-if="stage === 'room'" />
</UIKitProvider>

<script setup lang="ts">
import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
import { ConferenceMainView, ConferenceMainViewH5 } from '@tencentcloud/roomkit-web-vue3';
</script>

配置用户联系人列表

TUIRoomKit 内置的邀请参会和预定会议选人组件,底层默认依赖腾讯云 IM 的用户关系链(好友列表)。如果您希望在这些组件中展示您企业内部的组织架构或好友列表,请先通过服务端 REST API 将您的业务联系人同步至腾讯云 IM 系统中:
1. 使用 账号管理 > 导入多个账号 REST API 接口批量导入用户账号。
2. 使用 好友管理 > 导入好友 REST API 接口批量导入用户关系链。


修改房间分享链接

TUIRoomKit 默认使用当前页面地址作为房间分享链接。

如您需要修改链接地址,可调用 conference.setFeatureConfig 更新分享链接。
import { conference } from '@tencentcloud/roomkit-web-vue3';

// 在 conference.createAndJoinRoom / conference.joinRoom 成功之后立即调用,确保 roomId 已知
const roomId = '123456';
conference.setFeatureConfig({
shareLink: `https://your-domain.com/room?roomId=${roomId}`,
});

设置视频布局及挂件

TUIRoomKit 目前支持九宫格、侧边栏及顶部栏三种流布局,默认为九宫格布局,开发者可调用 conference.setFeatureConfig 修改默认视频布局。
import { RoomLayoutTemplate } from 'tuikit-atomicx-vue3/room';

// 方案一:修改默认视频流布局为侧边栏布局
conference.setFeatureConfig({ layoutTemplate: RoomLayoutTemplate.SidebarLayout });

// 方案二:修改默认视频流布局为顶部栏布局
conference.setFeatureConfig({ layoutTemplate: RoomLayoutTemplate.CinemaLayout });
TUIRoomKit 默认内置以下视频流挂件,如您需要自定义视频流挂件,请参考 UI 自定义 > 视频布局及挂件


常见问题

创建房间的用户(房主)关闭网页或异常退出后,会议会立即结束吗?

不会。房主关闭浏览器或因网络异常离开页面时,会议不会立即解散,其他在房成员仍可继续会议。
为节省资源,建议在会议实际结束时,通过以下任一方式主动销毁房间:
界面操作:房主点击 TUIRoomKit 界面上的「解散房间」按钮;
客户端 API:调用 conference.endRoom() 方法;
服务端 API:通过 REST API 进行远程销毁。
注意:若未主动解散,系统会在会议结束时间后 6 小时,且房间内人数为 0 时自动回收资源。

多个设备能否使用同一个 userId 同时加入同一场会议?

不支持。TUIRoomKit 不允许同一 userId 在多个设备上同时进入同一房间。
互踢机制:若后到的设备使用相同 userId 尝试进房,先前已在房内的设备会被强制下线(踢出)。
解决方案:如需实现多端(如手机、PC)同时加入会议,请确保为每个设备分配唯一的 userId。

在本地开发时使用正常,但部署到线上环境后无法正常采集用户的摄像头或麦克风设备?

原因:浏览器出于安全与隐私考虑,仅允许在安全环境(https://localhostfile:// 等)下采集摄像头、麦克风。HTTP 协议下浏览器会默认禁止访问媒体设备。
解决方案:若本地(localhost)测试正常但部署后采集失败,请检查页面是否使用 HTTPS 协议部署,并确保证书有效。
相关资源:更多关于 URL 域名及协议的限制详情,请参见 URL 域名及协议限制说明

是否支持使用 iframe 集成?

支持。使用 iframe 集成 TUIRoomKit 时, 需要在 iframe 标签中配置 allow 属性以授予必要的浏览器权限(麦克风、摄像头、屏幕共享、全屏等),示例如下:
// 开启麦克风、摄像头、屏幕分享、全屏权限
<iframe src="https://your-domain.com/index.html" allow="microphone; camera; display-capture; display; fullscreen;">
更多信息可参考 内嵌页面 (iframe)

是否支持设置内网代理?

支持。更多内网代理信息请参考 内网代理(Web)

是否可以直接修改 TUIRoomKit 的底层源码?

TUIRoomKit 已提供丰富的 UI 自定义能力,包括 主题及语言界面微调视频布局及挂件水印配置 等,可满足大多数业务的个性化需求。
我们非常不推荐您进行源码导出。导出源码意味着您的项目将脱离 TUIRoomKit 的常规 npm 版本升级路径。您不仅需要自行承担后续极高的代码维护成本,也将无法直接通过更新版本来享受我们后续推出的新功能和底层音视频引擎的性能优化。
推荐方案:优先查阅 UI 自定义系列文档,使用标准自定义接口。
需求反馈:若现有接口无法满足业务诉求,欢迎 联系我们 提交场景需求,我们将评估并提供更合理的标准 API 支持。
若您已充分评估维护风险,且业务存在必须修改底层结构的深度定制需求,可按以下步骤导出源码:
Vue3
1. 执行源码导出脚本,默认拷贝路径为 ./src/components/RoomKit
node ./node_modules/@tencentcloud/roomkit-web-vue3/scripts/eject.js
2. 根据脚本提示确认是否要将 TUIRoomKit 源码拷贝到 ./src/components/RoomKit 目录。如您需要自定义拷贝目录请输入 'y', 否则输入'n'。

3. 源码导出后,在您指定的项目路径中会新增 TUIRoomKit 源码。此时,您需要手动将 ConferenceMainView 组件,ConferenceMainViewH5 组件的 conference 对象的引用从 npm 包地址更改为 TUIRoom 源码的相对路径地址。
- import { ConferenceMainView, ConferenceMainViewH5, conference } from '@tencentcloud/roomkit-web-vue3';
// 替换引用路径为 TUIRoomKit 源码的真实路径
+ import { ConferenceMainView, ConferenceMainViewH5, conference } from './components/RoomKit/index.ts';
4. 配置 ESLint 校验
如果您导出 TUIRoomKit 源码后运行项目出现 ESLint 报错,您可以在 .eslintignore 文件中添加 RoomKit 文件夹忽略 ESLint 检测。
// 请替换为 TUIRoomKit 源码真实路径
src/components/RoomKit

联系我们

如果您在接入或使用过程有任何疑问或者建议,欢迎 联系我们 提交反馈。