.js / .d.ts / .css)。pnpm run start:server
baseURL 需与此端口一致(例如 http://localhost:9000/api)。pnpm add tuikit-live-manager-sdk-react
initHttpClient 注入 axios 实例。SDK 中有两类初始化,职责不同:initHttpClient 负责 HTTP 通信层(API 请求),useLiveMonitorState().init() 负责播放器等业务能力初始化,两者都需调用。initHttpClient 会自动:// src/main.tsx 或应用入口文件import { initHttpClient } from 'tuikit-live-manager-sdk-react';import axios from 'axios';const axiosInstance = axios.create({baseURL: '/api',timeout: 10000,});initHttpClient(axiosInstance);
useLiveMonitorState():直播间管理(列表、创建、编辑、结束直播、推拉流);useGiftState():礼物管理(CRUD、分类、多语言);useRiskControlState(options):风控管理(内容审核、成员管控、聊天管理)。import { useLiveMonitorState } from 'tuikit-live-manager-sdk-react';const {init, // 初始化播放器等业务能力(幂等)liveList, // 直播列表 MonitorLiveInfo[]hasMore, // 是否还有更多数据currentLive, // 当前选中的直播setCurrentLive, // 设置当前直播间(传入 liveId)fetchLiveList, // 获取直播列表(支持分页)createLive, // 创建直播 → Promise<MonitorLiveInfo>updateLive, // 更新当前直播间信息endLive, // 结束直播(支持指定 liveId 或使用 currentLive)fetchLiveDetail, // 获取直播间详情(含推流信息)fetchLiveStats, // 获取直播间统计startPlay, // 开始播放(liveId + containerId)stopPlay, // 停止播放} = useLiveMonitorState();
init(config) 用于初始化业务能力,需传入 ServerConfig(含服务端地址 baseURL、超时、播放器工厂 playerFactory 等配置)。其中 playerFactory 用于 startPlay / stopPlay 等播放相关能力,不传时 SDK 内部自动创建默认实现。HTTP 通信层由 initHttpClient 负责,两者的 baseURL 相互独立。这是一个单例 Hook,多组件共享同一实例。import { useLiveMonitorState } from 'tuikit-live-manager-sdk-react';import { useEffect, useState } from 'react';function CustomLiveList() {const { init, liveList, fetchLiveList, createLive, setCurrentLive, fetchLiveDetail } = useLiveMonitorState();const [name, setName] = useState('');useEffect(() => {init({ baseURL: 'http://localhost:9000/api' });fetchLiveList();}, []);return (<div><input value={name} onChange={e => setName(e.target.value)} /><button onClick={async () => {const live = await createLive({ anchorId: 'anchor_001', liveName: name, coverUrl: '' });setCurrentLive(live.liveId);await fetchLiveDetail();}}>创建直播间</button><ul>{liveList.map(live => (<li key={live.liveId} onClick={() => setCurrentLive(live.liveId)}>{live.liveName} — {live.onlineCount} 人</li>))}</ul></div>);}
import { useLiveMonitorState } from 'tuikit-live-manager-sdk-react';import { useEffect } from 'react';function LiveListPage() {const { init, liveList, hasMore, fetchLiveList } = useLiveMonitorState();useEffect(() => {init({ baseURL: 'http://localhost:9000/api' });fetchLiveList();}, []);return (<div><ul>{liveList.map(live => (<li key={live.liveId}>{live.liveName} — {live.onlineCount} 人</li>))}</ul>{hasMore && <button onClick={() => fetchLiveList()}>加载更多</button>}</div>);}
import { useGiftState } from 'tuikit-live-manager-sdk-react';const {giftList, // 礼物列表 GiftItem[]giftCategoryList, // 分类列表 GiftCategoryItem[]fetchGiftList, // 获取礼物列表(同时返回分类)createGift, // 创建礼物 → Promise<string>updateGift, // 更新礼物deleteGift, // 删除礼物(传入 giftId)createGiftCategory, // 创建礼物分类updateGiftCategory, // 更新礼物分类deleteGiftCategory, // 删除礼物分类addGiftCategoryRelations, // 添加礼物-分类关联deleteGiftCategoryRelations, // 移除礼物-分类关联// 多语言管理getGiftLanguage, // 获取礼物多语言信息setGiftLanguage, // 设置礼物多语言信息deleteGiftLanguage, // 删除礼物多语言getGiftCategoryLanguage, // 获取分类多语言信息setGiftCategoryLanguage, // 设置分类多语言信息deleteGiftCategoryLanguage, // 删除分类多语言信息} = useGiftState();
import { useGiftState } from 'tuikit-live-manager-sdk-react';import { useEffect, useState } from 'react';function GiftManager() {const {giftList, giftCategoryList, fetchGiftList,createGift, updateGift, deleteGift,createGiftCategory,} = useGiftState();const [newGiftName, setNewGiftName] = useState('');useEffect(() => { fetchGiftList(); }, []);const handleCreateGift = async () => {await createGift({ id: `gift_${Date.now()}`, name: newGiftName, iconUrl: '', price: 100 });setNewGiftName('');await fetchGiftList();};const handleDelete = async (giftId: string) => {await deleteGift(giftId);await fetchGiftList();};return (<div><input value={newGiftName} onChange={e => setNewGiftName(e.target.value)} placeholder="礼物名称" /><button onClick={handleCreateGift}>创建礼物</button><button onClick={() => createGiftCategory({ name: '热门礼物' }).then(fetchGiftList)}>创建分类</button>{giftCategoryList.map(cat => (<div key={cat.id}><h3>{cat.name}</h3><ul>{giftList.filter(g => g.categoryIds?.includes(cat.id)).map(gift => (<li key={gift.id}>{gift.name} — {gift.price} 金币<button onClick={() => handleDelete(gift.id)}>删除</button></li>))}</ul></div>))}</div>);}
liveId。import { useRiskControlState } from 'tuikit-live-manager-sdk-react';const {// 审核管理textModerationAvailable, // 审核能力是否可用moderationMode, // 审核模式:cloud | customcustomModerationToggleEnabled, // 全员审核开关状态(custom 模式)updateCustomModerationToggleEnabled, // 设置全员审核开关(custom 模式)textModerationList, // 文本审核记录列表textModerationTotal, // 审核记录总数textModerationPageNum, // 当前审核列表页码textModerationLoading, // 审核列表加载状态fetchTextModerationList, // 获取审核列表(支持分页参数)approveTextModerationItems, // 批量放行审核记录bypassCorrectionKeyword, // 绕过纠错关键词 params: { content: string; liveId?: string }deleteModerationItems, // 删除审核项 ids: string[]// 成员管理muteMember, // 禁言成员unmuteMember, // 取消禁言banMember, // 封禁成员unbanMember, // 取消封禁mutedList, // 禁言列表bannedList, // 封禁列表fetchMutedList, // 获取禁言列表fetchBannedList, // 获取封禁列表// 聊天管理sendViolationWarning, // 发送违规警告sendAdminMessage, // 发送管理员消息 content: string} = useRiskControlState({ liveId: 'xxx', pageSize: 20 });
import { useRiskControlState } from 'tuikit-live-manager-sdk-react';import { useEffect } from 'react';function CustomRiskPanel({ liveId }: { liveId: string }) {const { textModerationList, fetchTextModerationList, approveTextModerationItems, muteMember } =useRiskControlState({ liveId, pageSize: 20 });useEffect(() => { fetchTextModerationList(); }, []);return (<div>{textModerationList.map(item => (<div key={item.id}><span>{item.content}</span><button onClick={() => approveTextModerationItems({ ids: [item.id] })}>放行</button><button onClick={() => muteMember({ memberAccounts: [item.userId], muteTime: 300 })}>禁言5分钟</button></div>))}</div>);}
tuikit-atomicx-react 提供的音视频与 IM 渲染能力:类别 | 导入 | 说明 |
视频播放 | LiveView | 直播视频画面渲染组件。 |
弹幕消息 | BarrageList, BarrageInput | 弹幕列表展示与输入框。 |
观众列表 | LiveAudienceList, useLiveAudienceState | 观众列表组件与状态。 |
直播操作 | useLiveListState, LiveListEvent | 加入/离开直播、事件订阅。 |
登录认证 | useLoginState | 登录及用户信息获取。 |
播放器控制 | useLivePlayerState | 控制栏显隐、播放器设置。 |
文档反馈