消息列表实现概述
本篇主要介绍保利威聊天室消息列表基本实现逻辑。
一、历史聊天消息
消息列表中的消息来源,主要分为历史消息以及实时消息,而历史消息又有场次历史消息和频道历史消息之分。
场次历史消息
每场直播都会对应一个唯一的场次id(sessionId),该场直播中所有用户的发言都关联了该 id,可以通过 getSessionHistory
方法获取该场次直播的历史聊天消息。
可根据返回数据中 curPage
跟 totalPage
字段的对比,判断当前是否加载到末页。
频道历史消息
可通过 getChannelHistory
方法获取频道所有场次的聊天消息。注意,每个频道都有允许保存的最大消息数量,因此当消息量超过最大数量时,会优先舍弃旧消息。
二、实时收发聊天消息
他人的文字发言、发送图片、消息被删除、自定义消息等,均会在 SDK 内触发相应事件,可监听这些事件,并根据参数去处理实际所需显示的消息。
接收消息
此处列举所有与聊天室消息相关的事件,详细事件、参数、字段等,请参考 API 文档。以下摘取部分常用事件:
消息类型列表
为了便于快速集成,本 SDK 基于保利威目前的消息列表 UI 展示形式对部分聊天室事件进行了分类封装,详细类型常量可通过 chat.msgTypes
访问。
部分需要展示的事件数据会含有 msgType
字段,只需要将其插入本地消息列表,并根据该字段展示对应形式的组件/样式即可。同样,历史消息也会封装此字段。下面列举各 msgType
对应的事件。
在监听到上述事件时,可以考虑将消息体加入到待显示消息列表中,然后根据具体 msgType 采用相应组件进行渲染展示。
发送消息
发送文字消息
可使用 send
方法发送普通文字消息。
Last updated