聊天重放

一、功能概述

聊天室模块(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