tencent cloud

实时音视频

动态与公告
产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
产品简介
产品概述
基本概念
产品功能
产品优势
应用场景
性能数据
购买指南
计费概述
免费时长说明
月订阅
现收现付
TRTC 逾期与暂停政策
常见问题解答
退款说明
新手指引
Demo 体验
视频通话 SDK
组件介绍
开通服务
跑通 Demo
快速接入
离线唤醒
会话聊天
云端录制
AI 降噪
界面定制
Chat 集成通话能力
更多特性
无 UI 集成
服务端 API
客户端 API
解决方案
错误码表
发布日志
常见问题
视频会议 SDK
组件介绍(TUIRoomKit)
开通服务(TUIRoomKit)
跑通 Demo(TUIRoomKit)
快速接入(TUIRoomKit)
屏幕共享(TUIRoomKit)
预定会议(TUIRoomKit)
会中呼叫(TUIRoomKit)
界面定制(TUIRoomKit)
虚拟背景(TUIRoomKit)
会议控制(TUIRoomKit)
云端录制(TUIRoomKit)
AI 降噪(TUIRoomKit)
会中聊天(TUIRoomKit)
机器人推流(TUIRoomKit)
更多特性(TUIRoomKit)
客户端 API(TUIRoomKit)
服务端 API(TUIRoomKit)
常见问题(TUIRoomKit)
错误码 (TUIRoomKit)
SDK更新日志(TUIRoomKit)
直播与语聊 SDK
Live 视频直播计费说明
组件介绍
开通服务(TUILiveKit)
跑通 Demo
无 UI 集成
UI 自定义
直播监播
视频直播
语聊房
高级功能
客户端 API
服务端 API
错误码
发布日志
常见问题
RTC Engine
开通服务
SDK 下载
API-Example
接入指引
API-参考手册
高级功能
AI 集成
概述
MCP 配置
Skills 配置
集成指南
常见问题
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
控制台指南
应用管理
套餐包管理
用量统计
监控仪表盘
开发辅助
解决方案
实时合唱
常见问题
迁移指南
计费相关
功能相关
UserSig 相关
应对防火墙限制相关
缩减安装包体积相关
Andriod 与 iOS 相关
Web 端相关
Flutter 相关
Electron 相关
TRTCCalling Web 相关
音视频质量相关
其他问题
旧版文档
RTC RoomEngine SDK(旧)
集成 TUIRoom (Web)
集成 TUIRoom (Android)
集成 TUIRoom (iOS)
集成 TUIRoom (Flutter)
集成 TUIRoom (Electron)
TUIRoom API 查询
实现云端录制与回放(旧)
监控仪表盘计费(旧)
协议与策略
安全合规认证
安全白皮书
信息安全说明
服务等级协议
苹果隐私策略:PrivacyInfo.xcprivacy
TRTC 政策
隐私协议
数据处理和安全协议
词汇表

聊天弹幕组件(Web 桌面浏览器)

PDF
Modo Foco
Tamanho da Fonte
Última atualização: 2025-10-20 11:21:36
本文对弹幕组件进行了详细的介绍,其中包含弹幕消息组件(BarrageList)消息发送组件(BarrageInput)。您可以在已有项目中直接参考本文示例集成我们开发好的整体组件,也可以根据您的需求按照文档中的组件自定义部分对样式,布局进行深度的定制。


组件构成

组件名称
具体内容
弹幕消息组件(BarrageList)
负责实时展示和管理弹幕消息流的组件,提供消息列表渲染、时间聚合、用户交互和响应式适配等完整的消息展示解决方案。
消息发送组件(BarrageInput)
提供富文本编辑和消息发送功能的输入组件,集成表情选择器、字符限制、状态管理和跨平台适配,为用户提供流畅的消息输入体验。

组件接入

步骤1:环境配置及开通服务

在进行快速接入之前,您需要参考准备工作,满足相关环境配置及开通对应服务。

步骤2:安装依赖

npm
pnpm
yarn
npm install tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 --save
pnpm add tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3
yarn add tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3

步骤3:集成弹幕组件

在您的项目中引入并使用弹幕组件,可直接复制如下示例至您的项目中展示完整的直播间弹幕消息组件以及消息发送组件
<template>
<UIKitProvider theme="dark" language="zh-CN">
<div class="app">
<div class="chat-container">
<div class="chat-content">
<BarrageList class="barrage-list" />
</div>
<div class="chat-input">
<BarrageInput class="barrage-input" />
</div>
</div>
</div>
</UIKitProvider>
</template>

<script setup lang="ts">
import { onMounted, ref } from 'vue';
import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
import { BarrageList, BarrageInput, useLoginState, useLiveState } from 'tuikit-atomicx-vue3';

const { login, loginUserInfo } = useLoginState();
const { joinLive } = useLiveState();

async function initLogin() {
try {
await login({
sdkAppId: 0, // SDKAppID, 可以参考步骤 1 获取
userId: '', // UserID, 可以参考步骤 1 获取
userSig: '', // userSig, 可以参考步骤 1 获取
});
} catch (error) {
console.error('登录失败:', error);
}
}

onMounted(async () => {
await initLogin();
await joinLive({
liveId: '输入对应直播间 LiveId', // 输入对应 liveId 进入直播间
});
});
</script>

<style scoped>.app{width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;padding:20px;box-sizing:border-box}.chat-container{width:100%;max-width:500px;height:600px;border-radius:16px;display:flex;flex-direction:column;overflow:hidden}.chat-content{flex:1;overflow:hidden}.barrage-list{width:100%;height:100%}.chat-input{background-color:var(--bg-color-dialog);padding:16px}.barrage-input{width:100%}</style>

自定义组件

弹幕消息组件分别为用户自定义需求提供了丰富且多维度的Props 接口,允许用户自定义功能或自定义 UI 等,具体参数内容如下表所示。
说明:
若您需要直接了解弹幕消息组件(BarrageList)的自定义的详细内容可快速跳转如下链接:弹幕消息组件自定义
若您需要直接了解消息发送组件(BarrageInput)的自定义的详细内容可快速跳转如下链接:消息发送组件自定义

弹幕消息组件(BarrageList)自定义

Props

参数名
参数类型
默认值
说明
messageAggregationTime
Number
300
消息分组的最大时间间隔(秒)。
filter
(message: IMessageModel) => boolean
-
用于筛选消息的函数。
Message
Component
Message
自定义消息组件。
MessageTimeDivider
Component
MessageTimeDivider
自定义消息时间分割线组件。
LocalNoticeMessage
Component
LocalNoticeMessage
自定义本地通知消息组件。
containerStyle
CSSProperties
-
自定义消息列表容器样式。
itemStyle
CSSProperties
-
自定义单条消息项样式。
height
String
-
组件高度,支持CSS单位。
style
CSSProperties
-
指定根元素样式的自定义样式。
如上表所示,弹幕消息组件的 Props 自定义部分由三块内容组成,分别为组件属性、可替换子组件、自定义样式,具体内容如下表所示。
内容
参数
组件属性
filtermessageAggregationTime
可替换子组件
MessageMessageTimeDividerLocalNoticeMessage
自定义样式
ContainerStyleItemStyleheightstyle

消息筛选

通过设置 filter 参数,您可以灵活地控制弹幕消息组件中显示的消息内容。
<BarrageList :filter="(message) => message.type === 'TIMTextElem'" />

消息聚合时间

通过设置 messageAggregationTime 参数,您可以控制消息分组的时间间隔。
<BarrageList :messageAggregationTime="300" />

自定义样式

弹幕消息组件提供了 containerStyleitemStyle自定义子组件 等内容,用于自定义组件样式。
1. 要自定义消息列表容器样式,您可以给 containerStyle 属性传递一个样式对象。
示例:自定义容器内边距
<BarrageList :containerStyle="{ padding: '0px' }" />
2. 要自定义单条消息样式,您可以给 itemStyle 属性传递一个样式对象。
示例:自定义消息项间距和边框及消息气泡颜色
<BarrageList :itemStyle="{ borderRadius: '10px', background: '#1C66e5', padding: '10px', boxSizing: 'border-box'}" />
3. 弹幕消息组件支持自定义消息展示组件,您可以完全控制消息的渲染方式。
示例:自定义消息组件
// MyCustomMessage.vue
<template>
<div class="custom-message">
<div class="message-header">
<span class="user-name">{{ getUserName(message) }}</span>
<span class="message-time">{{ formatTime(message.time) }}</span>
</div>
<div class="message-content">
{{ getMessageText(message) }}
</div>
</div>
</template>

<script setup lang="ts">
interface SimpleMessage {
id: string;
from: string;
nick?: string;
nameCard?: string;
time: number;
type: string;
content: string;
avatar?: string;
}

interface Props {
message: SimpleMessage;
isLastInChunk?: boolean;
}

const props = defineProps<Props>();

const formatTime = (timestamp: number) => {
return new Date(timestamp * 1000).toLocaleTimeString('zh-CN', {
hour: '2-digit',
minute: '2-digit'
});
};

const getUserName = (message: SimpleMessage) => {
return message.nameCard || message.nick || message.from || '匿名用户';
};

const getMessageText = (message: SimpleMessage) => {
if (message.type === 'text') {
return message.content || '';
} else if (message.type === 'image') {
return '[图片消息]';
} else if (message.type === 'emoji') {
return '[表情消息]';
}
return '[其他类型消息]';
};
</script>

<style scoped>.custom-message{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:white;padding:12px;border-radius:12px;margin:4px 0;box-shadow:0 2px 8px rgba(0,0,0,0.1);transition:transform 0.2s ease}.custom-message:hover{transform:translateY(-2px)}.message-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;opacity:0.9}.user-name{font-weight:500;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-time{font-size:11px;opacity:0.7}.message-content{font-size:14px;line-height:1.4;word-break:break-word}</style>

// 弹幕消息组件 中使用
<template>
<BarrageList :Message="MyCustomMessage" />
</template>

<script setup lang="ts">
import MyCustomMessage from "./MyCustomMessage.vue";
</script>
修改前
修改后
自定义容器内边距
自定义消息项间距和边框
自定义消息组件





消息发送组件(BarrageInput)自定义

Props

参数名
类型
默认值
说明
containerClass
String
''
自定义容器的 CSS 类名。
containerStyle
Record

{}
自定义容器的内联样式。
width
String
-
组件宽度,支持CSS单位。
height
String
-
组件高度,支持CSS单位。
minHeight
String
'40px'
组件最小高度,支持CSS单位。
maxHeight
String
'140px'
组件最大高度,支持CSS单位。
placeholder
String
-
输入框占位符文本。
disabled
Boolean
false
是否禁用输入框。
autoFocus
Boolean
true
是否自动聚焦到输入框。
maxLength
Number
80
输入内容的最大字符数限制。

Events

事件名
参数
说明
focus
-
输入框获得焦点时触发。
blur
-
输入框失去焦点时触发。
如上表所示,消息发送组件的 Props 自定义部分由三块内容组成,分别为尺寸控制、输入限制、自定义样式,具体内容如下表所示。
内容
参数
尺寸控制
widthheightminHeightminWidth
输入限制
maxLength
自定义样式
ContainerStyleContainerClass

尺寸控制

通过设置 widthheightminHeightmaxHeight 参数,您可以灵活地控制 BarrageInput 的尺寸。
<BarrageInput width="400px" height="60px" minHeight="40px" maxHeight="120px" />

输入限制

通过设置 maxLength 参数,您可以控制输入内容的最大字符数。
<BarrageInput :maxLength="100" />

自定义样式

消息发送组件提供了 containerStylecontainerClass 属性,用于自定义组件样式。
1. 若需要自定义输入框容器样式,您可以给 containerStyle 属性传递一个样式对象。
示例:自定义容器背景和边框圆角
<BarrageInput :containerStyle="{ backgroundColor: '#a8abb2', borderRadius: '0 0', boxShadow: '0 2px 8px rgba(0,0,0,0.1)'}" />
2. 若需要自定义输入框容器类名,您可以给 containerClass 属性传递一个类名字符串。
示例:自定义容器类名
<template>
<BarrageInput containerClass="my-custom-input-container" />
</template>

<style>.my-custom-input-container {background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);border: none;border-radius: 20px;padding: 8px 20px;}.my-custom-input-container:focus-within {box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);}</style>
修改前
修改后
自定义容器背景和边框圆角
自定义消息项间距和边框





Ajuda e Suporte

Esta página foi útil?

comentários