.js / .d.ts / .css).pnpm run start:server
baseURL must match this port (e.g., http://localhost:9000/api).pnpm add tuikit-live-manager-sdk-vue
initHttpClient to inject an axios instance.The SDK has two types of initialization with different responsibilities: initHttpClient handles the HTTP communication layer (API requests), while useLiveMonitorState().init() handles business capability initialization such as the player. Both must be called.initHttpClient will automatically:// src/main.ts or app entry fileimport { initHttpClient } from 'tuikit-live-manager-sdk-vue';import axios from 'axios';const axiosInstance = axios.create({baseURL: '/api',timeout: 10000,});initHttpClient(axiosInstance);
useLiveMonitorState():Live room management (list, create, edit, end streams, push/pull);useGiftState():Gift management (CRUD, categories, multi-language);useRiskControlState(options):Risk control management (content moderation, member management, chat management).import { useLiveMonitorState } from 'tuikit-live-manager-sdk-vue';const {init, // Init player/business capabilities (idempotent)liveList, // Live room list Ref<MonitorLiveInfo[]>hasMore, // Whether more data is available Ref<boolean>currentLive, // Currently selected live room Ref<MonitorLiveInfo | null>setCurrentLive, // Set current room (pass liveId)fetchLiveList, // Fetch room list (supports pagination)createLive, // Create room → Promise<MonitorLiveInfo>updateLive, // Update current room infoendLive, // End live (supports liveId or currentLive)fetchLiveDetail, // Fetch room details (with streaming info)fetchLiveStats, // Fetch room statisticsstartPlay, // Start playback (liveId + containerId)stopPlay, // Stop playback} = useLiveMonitorState();
init(config) Used to initialize business capabilities. Requires ServerConfig (including server address baseURL, timeout, player factory playerFactory, etc.). The playerFactory is used for playback-related capabilities such as startPlay/stopPlay. If not provided, the SDK internally creates a default implementation. The HTTP communication layer is handled by initHttpClient, with independent baseURL values.This is a singleton Composable, shared across multiple components.<script setup>import { useLiveMonitorState } from 'tuikit-live-manager-sdk-vue';import { onMounted, ref } from 'vue';const { init, liveList, fetchLiveList, createLive, setCurrentLive, fetchLiveDetail } = useLiveMonitorState();const name = ref('');onMounted(() => {init({ baseURL: 'http://localhost:9000/api' });fetchLiveList();});const handleCreate = async () => {const live = await createLive({ anchorId: 'anchor_001', liveName: name.value, coverUrl: '' });setCurrentLive(live.liveId);await fetchLiveDetail();};</script><template><div><input v-model="name" /><button @click="handleCreate">Create Room</button><ul><li v-for="live in liveList" :key="live.liveId" @click="setCurrentLive(live.liveId)">{{ live.liveName }} — {{ live.onlineCount }} online</li></ul></div></template>
<script setup>import { useLiveMonitorState } from 'tuikit-live-manager-sdk-vue';import { onMounted } from 'vue';const { init, liveList, hasMore, fetchLiveList } = useLiveMonitorState();onMounted(() => {init({ baseURL: 'http://localhost:9000/api' });fetchLiveList();});const loadMore = () => {if (hasMore.value) {fetchLiveList();}};</script><template><div><ul><li v-for="live in liveList" :key="live.liveId">{{ live.liveName }} — {{ live.onlineCount }} online</li></ul><button v-if="hasMore" @click="loadMore">Load More</button></div></template>
import { useGiftState } from 'tuikit-live-manager-sdk-vue';const {giftList, // Gift list Ref<GiftItem[]>giftCategoryList, // Category list Ref<GiftCategoryItem[]>fetchGiftList, // Fetch gift list (also returns categories)createGift, // Create Gift → Promise<string>updateGift, // Update giftdeleteGift, // Delete gift (pass giftId)createGiftCategory, // Create gift categoryupdateGiftCategory, // Update gift categorydeleteGiftCategory, // Delete gift categoryaddGiftCategoryRelations, // Add gift-category relationdeleteGiftCategoryRelations, // Remove gift-category relation// Multi-language ManagementgetGiftLanguage, // Get gift multi-language infosetGiftLanguage, // Set gift multi-language infodeleteGiftLanguage, // Deletegift multi-languagegetGiftCategoryLanguage, // Get category multi-language infosetGiftCategoryLanguage, // Set category multi-language infodeleteGiftCategoryLanguage, // Deletecategory multi-language info} = useGiftState();
<script setup>import { useGiftState } from 'tuikit-live-manager-sdk-vue';import { onMounted, ref } from 'vue';const {giftList, giftCategoryList, fetchGiftList,createGift, updateGift, deleteGift,createGiftCategory, deleteGiftCategory,} = useGiftState();const newGiftName = ref('');const selectedCategory = ref('');onMounted(() => {fetchGiftList();});const handleCreateGift = async () => {await createGift({ id: `gift_${Date.now()}`, name: newGiftName.value, iconUrl: '', price: 100 });newGiftName.value = '';await fetchGiftList();};const handleDelete = async (giftId: string) => {await deleteGift(giftId);await fetchGiftList();};const handleCreateCategory = async () => {await createGiftCategory({ name: 'Popular Gifts' });await fetchGiftList();};</script><template><div><input v-model="newGiftName" placeholder="Gift Name" /><button @click="handleCreateGift">Create Gift</button><button @click="handleCreateCategory">Create Category</button><div v-for="cat in giftCategoryList" :key="cat.id"><h3>{{ cat.name }}</h3><ul><li v-for="gift in giftList.filter(g => g.categoryIds?.includes(cat.id))" :key="gift.id">{{ gift.name }} — {{ gift.price }} coins<button @click="() => handleDelete(gift.id)">Delete</button></li></ul></div></div></template>
liveId.import { useRiskControlState } from 'tuikit-live-manager-sdk-vue';const {// Moderation ManagementtextModerationAvailable, // Whether moderation is available Ref<boolean>moderationMode, // Moderation mode: cloud | custom Ref<ModerationMode>customModerationToggleEnabled, // Full moderation toggle (custom mode)Ref<boolean>updateCustomModerationToggleEnabled, // Set full moderation toggle (custom mode)textModerationList, // Text moderation record list Ref<TextModerationItem[]>textModerationTotal, // Total moderation records Ref<number>textModerationPageNum, // Current moderation page Ref<number>textModerationLoading, // Moderation list loading state Ref<boolean>fetchTextModerationList, // Fetch moderation list (supports pagination)approveTextModerationItems, // Batch approve moderation recordsbypassCorrectionKeyword, // Bypass correction keyword params: { content: string; liveId?: string }deleteModerationItems, // Delete moderation items ids: string[]// Member ManagementmuteMember, // Mute memberunmuteMember, // Unmute memberbanMember, // Ban memberunbanMember, // Unban membermutedList, // Muted list Ref<MutedMember[]>bannedList, // Banned list Ref<BannedMember[]>fetchMutedList, // Fetch muted listfetchBannedList, // Fetch banned list// Chat ManagementsendViolationWarning, // Send violation warningsendAdminMessage, // Send admin message content: string} = useRiskControlState({ liveId: 'xxx', pageSize: 20 });
<script setup>import { useRiskControlState } from 'tuikit-live-manager-sdk-vue';import { onMounted } from 'vue';const props = defineProps<{ liveId: string }>();const { textModerationList, fetchTextModerationList, approveTextModerationItems, muteMember } =useRiskControlState({ liveId: props.liveId, pageSize: 20 });onMounted(() => { fetchTextModerationList(); });</script><template><div v-for="item in textModerationList" :key="item.id"><span>{{ item.content }}</span><button @click="approveTextModerationItems({ ids: [item.id] })">Approve</button><button @click="muteMember({ memberAccounts: [item.userId], muteTime: 300 })">Mute 5 min</button></div></template>
Category | Import | Description |
Video Playback | LiveView | Live video rendering component. |
Bullet Messages | BarrageList, BarrageInput | Bullet chat list display and input box. |
Audience List | LiveAudienceList, useLiveAudienceState | Audience list component and state. |
Live Operations | useLiveListState, LiveListEvent | Join/leave live streams, event subscriptions. |
Login Authentication | useLoginState | Login and user info retrieval. |
Player Controls | useLivePlayerState | Control bar visibility, player settings. |
フィードバック