产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
LiveAudienceState 是 AtomicXCore 中专门负责管理直播间观众信息的模块。通过 LiveAudienceState 您可以为您的直播应用构建一套完整的观众列表及管理系统。
LiveAudienceState 实例,并主动拉取一次当前的观众列表,用于首次展示。该模块内部会自动监听当前直播间状态的变化,当切换直播间时会自动更新观众列表。import { onMounted, watch } from 'vue';import { useLiveAudienceState } from "tuikit-atomicx-vue3";// 获取 LiveAudienceState 的实例const { fetchAudienceList, audienceList } = useLiveAudienceState();onMounted(async () => {try {// 获取观众列表,返回 Promiseawait fetchAudienceList();console.log('首次拉取观众列表成功');} catch (error) {console.error('首次拉取观众列表失败', error);}});// 监听 audienceList 的实时变更,用于驱动 UI 变更watch(audienceList, (newVal) => {console.log('观众列表更新:', newVal);});
audienceState 的 event 和 响应式数据,用来接收全量列表快照和实时的观众进出事件,从而驱动 UI 更新。import { onMounted, onUnmounted, watch } from 'vue';import { useLiveAudienceState, LiveAudienceEvent } from "tuikit-atomicx-vue3";const {audienceList,audienceCount,subscribeEvent,unsubscribeEvent} = useLiveAudienceState();// 监听 audienceCount 的实时变更,用于驱动 UI 更新人数显示watch(audienceCount, (newCount) => {console.log(`当前在线人数: ${newCount}`);});// 定义回调函数const onAudienceJoined = (eventInfo) => {console.log(`观众 ${eventInfo.audience.userName} 加入了直播间`);};const onAudienceLeft = (eventInfo) => {console.log(`观众 ${eventInfo.audience.userName} 离开了直播间`);};onMounted(() => {// 订阅观众进入事件subscribeEvent(LiveAudienceEvent.onAudienceJoined, onAudienceJoined);// 订阅观众离开事件subscribeEvent(LiveAudienceEvent.onAudienceLeft, onAudienceLeft);});onUnmounted(() => {// 组件卸载时取消订阅unsubscribeEvent(LiveAudienceEvent.onAudienceJoined, onAudienceJoined);unsubscribeEvent(LiveAudienceEvent.onAudienceLeft, onAudienceLeft);});
kickUserOutOfRoom 接口可以将指定用户请出直播间。import { useLiveAudienceState } from "tuikit-atomicx-vue3";const { kickUserOutOfRoom } = useLiveAudienceState();const handleKickUser = async (targetUserId: string) => {try {await kickUserOutOfRoom({ userId: targetUserId });console.log(`主播或管理员将 ${targetUserId} 踢出直播间`);} catch (error) {console.error(`主播或管理员将 ${targetUserId} 踢出直播间失败`, error);}};
setAdministrator 和 revokeAdministrator 接口可以管理用户的管理员身份。import { useLiveAudienceState } from "tuikit-atomicx-vue3";const { setAdministrator, revokeAdministrator } = useLiveAudienceState();// 主播可设置或取消管理员权限const promoteToAdmin = async (targetUserId: string) => {try {await setAdministrator({ userId: targetUserId });console.log(`成功将用户 ${targetUserId} 设置管理员`);} catch (error) {console.error(`将用户 ${targetUserId} 设置管理员失败`, error);}};// 主播可设置或取消管理员权限const revokeAdmin = async (targetUserId: string) => {try {await revokeAdministrator({ userId: targetUserId });console.log(`成功将用户 ${targetUserId} 的管理员身份撤销`);} catch (error) {console.error(`撤销用户 ${targetUserId} 管理员身份失败`, error);}};
import { useLiveAudienceState } from "tuikit-atomicx-vue3";const { disableSendMessage } = useLiveAudienceState();// 禁言用户const muteUser = async (targetUserId: string) => {await disableSendMessage({ userId: targetUserId, isDisable: true });};// 解除禁言const unmuteUser = async (targetUserId: string) => {await disableSendMessage({ userId: targetUserId, isDisable: false });};
onAudienceJoined,在弹幕/聊天区域显示一条欢迎消息,例如:"欢迎 [用户昵称] 进入直播间"。import { onMounted, onUnmounted } from 'vue';import { useLiveAudienceState, useBarrageState, LiveAudienceEvent } from "tuikit-atomicx-vue3";const { subscribeEvent, unsubscribeEvent } = useLiveAudienceState();// 假设 useBarrageState 提供了 appendLocalTip 方法const { appendLocalTip } = useBarrageState();const handleAudienceJoin = (eventInfo) => {const { audience } = eventInfo;// 创建一条本地提示消息const welcomeTip = {messageType: 'text',textContent: `欢迎 ${audience.userName || audience.userId} 进入直播间!`};// 插入本地弹幕appendLocalTip({ message: welcomeTip });console.log(`观众 ${audience.userName} 加入了直播间`);};onMounted(() => {subscribeEvent(LiveAudienceEvent.onAudienceJoined, handleAudienceJoin);});onUnmounted(() => {unsubscribeEvent(LiveAudienceEvent.onAudienceJoined, handleAudienceJoin);});
LiveAudienceState 中的在线人数(audienceCount)是如何更新的?时机和频率是怎样的?audienceCount 的更新并非总是实时的,其机制如下:LiveAudienceState 中观察到 audienceCount 的变化。audienceCount 是一个非常接近实时的高精度估算值,但在极端高并发场景下,它可能存在短暂的延迟或数据丢失。因此,我们建议您将其用于 UI 展示,而不应作为计费、统计等需要绝对精准场景的唯一依据。文档反馈