聊天重放
一、功能概述
聊天室模块(chat)
提供聊天重放功能 Api,用于开发者集成聊天重放功能。
二、使用方式 - 方法
2.1 设置聊天消息重放对应的回放对象
外部需要传入一个回放对象,聊天重放才能获取到回放对象对应的聊天记录
Api 方法: setChatMsgReplayPlaybackTarget(playbackTarget?: PlaybackTarget): void
参数说明:
playbackTarget:undefined,
PlaybackTarget
类型,选传
示例:
watchCore.chat.setChatMsgReplayPlaybackTarget(playbackTarget);
2.2 初始化聊天消息重放
Api 方法: initChatMsgReplay(): Promise<void>
示例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatMsgReplayStatusChange, ({ status }) => {
console.info(status)
}
// 需要先执行 setChatMsgReplayPlaybackTarget 方法
await watchCore.chat.initChatMsgReplay()
2.3 添加聊天重放本地缓存插件
为了能够减少对聊天室接口的请求,聊天室模块在实现回放功能时,支持通过添加缓存插件,后续读取聊天重放记录时,优先从缓存中读取。
注意插件只会添加一次,添加完成后再添加不会生效,建议在 initChatMsgReplay
方法调用之前添加插件
Api 方法: addChatMsgReplayCachePlugin(localCache: ChatMsgReplayCachePluginType): void
参数说明:
localCache:undefined,
ChatMsgReplayCachePluginType
类型,必传,详细类型说明如下
getItem
-
Function
是
-
setItem
-
Function
是
-
removeItem
-
Function
是
-
iterate
-
Function
是
-
示例:
// 以 localforage 库为例
import localForage from 'localforage'
watchCore.chat.addChatMsgReplayCachePlugin({
getItem: localForage.getItem,
setItem: localForage.setItem,
removeItem: localForage.removeItem,
iterate: localForage.iterate,
});
2.4 获取聊天消息重放历史数据
通过 getChatMsgReplayHistoryList
来获取聊天消息重放的历史数据
Api 方法: getChatMsgReplayHistoryList(options: Object): Promise<ChatReplayMsgType[]>
参数说明:
options:undefined,
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.5 处理聊天消息重放
外部使用时,需要结合观看页 SDK 的 PlayerEvents.TimeUpdate 事件回调来一起使用,使用过程中,可以通过 ChatEvents.ChatMessage` 事件来获取重放的消息 由于回放时可以通过播放器进度条快速跳转,此时可以通过 ChatEvents.ChatMsgReplayReload 事件来监听是否需要重新加载聊天室数据
Api 方法: processChatMsgReplay(params: Object): void
参数说明:
params:undefined,
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
示例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatMsgReplayReload, () => {
// initChatMsgRender
console.log('需要重新加载聊天重放数据渲染表格');
});
3.3 聊天消息事件
说明: 当收到聊天消息后触发该事件
Event 事件: ChatEvents.ChatMessage
回调参数: Object
对象,详细类型说明如下
chatMsg
聊天消息对象
ChatMsgType
示例:
// 聊天消息列表
const chatMsgList: ChatMsgType[] = [];
// 聊天消息事件
watchCore.chat.eventEmitter.on(ChatEvents.ChatMessage, (data) => {
// 插入到聊天消息列表
chatMsgList.push(data.chatMsg);
// 渲染聊天消息...
});
Last updated
Was this helpful?