聊天重播
一、功能概述
聊天室模块(chat)提供聊天重播功能 API,供開發者整合聊天重播功能。- 聊天重播-基本使用範例
二、使用方式 - 方法
2.1 初始化聊天訊息重播
API 方法: initChatMsgReplay(): Promise<void>
從 v0.3.0 版本開始支援 此方法需在
setChatMsgReplayPlaybackTarget之後執行,聊天室模組才能正常初始化聊天重播記錄,使用過程中會回呼 ChatEvents.ChatMsgReplayStatusChange 事件
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatMsgReplayStatusChange, ({ status }) => {
console.info(status)
}
// 需要先执行 setChatMsgReplayPlaybackTarget 方法
await watchCore.chat.initChatMsgReplay()
2.3 取得聊天訊息重播歷史資料
透過 getChatMsgReplayHistoryList 來取得聊天訊息重播的歷史資料
API 方法: getChatMsgReplayHistoryList(options: Object): Promise<ChatReplayMsgType[]>
從 v0.3.0 版本開始支援
參數說明:
- options:
Object類型,必填,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
mode |
聊天重播請求歷史資料模式 | ChatReplayRequestHistoryMode |
是 | - |
replayMsg |
根據指定的模式傳入對應的重播訊息,例如需要載入舊資料,則傳入目前聊天資料中的第一條訊息 | ChatReplayMsgType |
否 | - |
count |
聊天數量,限制最大值為 60 | number |
是 | - |
回傳值說明: 聊天訊息重播歷史資料,Promise<ChatReplayMsgType[]> 類型
範例:
import { ChatReplayRequestHistoryMode } from "@polyv/live-watch-sdk"
const data = await watchCore.chat.getChatMsgReplayHistoryList({
mode: ChatReplayRequestHistoryMode.Init,
count: 20
})
2.4 處理聊天訊息重播
外部使用時,需結合觀看頁 SDK 的 PlayerEvents.TimeUpdate 事件回呼一起使用,使用過程中,可透過 ChatEvents.ChatMessage` 事件來取得重播的訊息 由於重播時可透過播放器進度條快速跳轉,此時可透過 ChatEvents.ChatMsgReplayReload 事件來監聽是否需要重新載入聊天室資料
API 方法: processChatMsgReplay(params: Object): void
從 v0.3.0 版本開始支援
參數說明:
- params:
Object類型,必填,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
currentTime |
目前播放時間,單位:秒 | number |
是 | - |
durationTime |
播放總時長,單位:秒 | number |
是 | - |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatMessage, ({ chatMsg })=> {
console.info(chatMsg);
})
watchCore.chat.eventEmitter.on(ChatEvents.ChatMsgReplayReload, ()=> {
console.info("重新加载聊天室数据");
})
watchCore.player.eventEmitter.on(PlayerEvents.TimeUpdate, params => {
watchCore.chat.processChatMsgReplay(params);
});
三、使用方式 - 事件
3.1 聊天訊息重播狀態
Event 事件: ChatEvents.ChatMsgReplayStatusChange
回呼參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
status |
重播狀態 | ChatMsgReplayStatus |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatMsgReplayStatusChange, (params) => {
console.log('聊天重放状态变更:', params.status);
});
3.2 聊天訊息重播-重新載入
說明: 通知外部重新載入聊天重播的資料
Event 事件: ChatEvents.ChatMsgReplayReload
回呼參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
seconds |
- | number |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatMsgReplayReload, () => {
// initChatMsgRender
console.log('需要重新加载聊天重放数据渲染表格');
});
3.3 聊天訊息事件
說明: 收到聊天訊息後觸發此事件
Event 事件: ChatEvents.ChatMessage
回呼參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
chatMsg |
聊天訊息物件 | ChatMsgType |
isChatReplayMsg |
是否為聊天重播訊息 | boolean |
範例:
// 聊天消息列表
const chatMsgList: ChatMsgType[] = [];
// 聊天消息事件
watchCore.chat.eventEmitter.on(ChatEvents.ChatMessage, (data) => {
// 插入到聊天消息列表
chatMsgList.push(data.chatMsg);
// 渲染聊天消息...
});
