产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
AtomicXCore 框架中的 BarrageState 模块,为您的直播应用快速集成功能丰富、性能卓越的弹幕系统。
BarrageState 为您的直播应用提供了一套完整的弹幕解决方案,核心功能包括:liveId 绑定的 BarrageState 实例,并且监听 messageList 来接收最新的全量弹幕消息列表。import { useBarrageState } from 'tuikit-atomicx-vue3';import { watch } from 'vue'const { messageList } = useBarrageState()// 监听 messageList 的实时变更,用于驱动 UI 更新watch(messageList, (newVal, oldVal) => {console.log(newVal)});
sendTextMessage 方法向直播间内的所有用户广播一条纯文本消息。import { useBarrageState } from 'tuikit-atomicx-vue3'const { sendTextMessage } = useBarrageState();const sendMessage = async () => {try {await sendTextMessage({text: '大家好,欢迎来到直播间!',extensionInfo: {color: '#ff0000',fontSize: '16px'}});} catch (error) {console.error('消息发送失败:', error);}}
参数 | 类型 | 描述 |
text | string | 要发送的文本内容。 |
extensionInfo | Record<string, string> | 附加的扩展信息,可用于业务自定义。 |
businessId 和 data 自行解析和处理。import { useBarrageState } from 'tuikit-atomicx-vue3'import { watch } from 'vue';const { sendCustomMessage } = useBarrageState();/// 发送一条自定义弹幕,例如用于发送礼物const sendGiftMessage = async (giftId: string, giftCount: number) => {// 1. 定义一个能识别业务的IDconst businessId = 'live_gift';// 2. 将业务数据编码为 JSON 字符串const giftData = { gift_id: giftId, gift_count: giftCount };// 3. 调用核心API发送自定义消息try {await sendCustomMessage({businessId,data: JSON.stringify(giftData)});} catch (error) {console.error('礼物消息发送失败:', error);}};
参数 | 类型 | 描述 |
businessId | string | 业务唯一标识符,例如 "live_gift",用于接收端区分不同的自定义消息。 |
data | string | 业务数据,通常为 JSON 格式的字符串。 |
import { useBarrageState } from 'tuikit-atomicx-vue3'const { appendLocalTip } = useBarrageState()const systemTip = {liveId: 'live123',sender: {userId: 'system',userName: '系统',avatarUrl: '',},sequence: Date.now(), // 消息序列号,用于排序timestampInSecond: Math.floor(Date.now() / 1000), // 10位 Unix 时间戳messageType: 0, // 消息类型枚举值(例如:0 代表普通文本消息,请参考 API 枚举定义)textContent: '欢迎进入直播间!',// 消息显示的文本内容extensionInfo: { type: 'system' },// 扩展字段,用于 UI 特殊渲染}appendLocalTip(systemTip)
LiveAudienceState 中的 disableSendMessage 接口来实现对指定用户的禁言或解禁。此状态会被持久化,即使用户重新进入直播间,禁言状态依然有效。import { useLiveAudienceState } from 'tuikit-atomicx-vue3';const { disableSendMessage } = useLiveAudienceState()// isDisable 为 true 时禁用用户发送消息;// isDisable 为 false 时启用用户发送消息;await disableSendMessage({ userId: 'user123', isDisable: true });
LiveListState 的 updateLiveInfo 更新直播间信息来实现。import { useLiveListState } from 'tuikit-atomicx-vue3';// 1. 获取 LiveListState 的实例const { updateLiveInfo } = useLiveListState();const setGlobalMute = async (shouldMute: boolean) => {try {// 2. 调用更新接口// LiveListState 会根据传入的参数自动合并更新直播间信息await updateLiveInfo({// 对应 LiveInfo 中的 isMessageDisable 字段// true: 禁止所有观众发言// false: 允许观众发言isMessageDisable: shouldMute});console.log(`全体禁言状态已更新为: ${shouldMute}`);} catch (error) {console.error('更新全体禁言失败:', error);}};// 示例用法:开启全体禁言await setGlobalMute(true);
sendCustomMessage 实现。BarrageState 支持灵活的自定义消息格式,开发者可根据业务需求自定义消息结构和样式。{ "type": "colored_text", "text": "这是一条彩色弹幕!", "color": "#FF5733" }
sendCustomMessage 的 data 参数发送出去。businessId 可以设置为一个能代表您业务的唯一标识,例如 "barrage_style_v1"。messageType 是否为 'CUSTOM' 以及 businessId 是否匹配。如果匹配,则解析 data 字符串(通常是解析 JSON),根据解析出的数据(例如 color、text)来渲染您的自定义UI样式。sendTextMessage 方法有错误捕获。请检查回调返回的结果是成功还是失败。如果失败,错误信息会明确指出问题所在(例如“您已被禁言”、“网络错误”等)。barrageState 的订阅发生在该 liveId 对应的直播开始之后。如果在加入直播房间之前就开始监听,可能会错过部分消息。BarrageState 实例、加入直播房间、以及发送消息时使用的 liveId 完全一致,包括大小写。AtomicXCore 支持拉取历史弹幕消息,但这需要您在服务端控制台进行一项简单的配置。配置完成后,SDK 会自动处理后续的一切,您无需编写额外的代码。
AtomicXCore 底层会自动拉取配置的历史消息数量。这些历史消息会和实时消息一样,通过 BarrageState的订阅通道推送到 UI 层。应用会像接收实时弹幕一样,自然地接收并展示这些历史弹幕。文档反馈