上云无忧 > 文档中心 > 环信IM即时通讯使用教程(Web) - 管理服务端的会话和消息
IM即时通讯
环信IM即时通讯使用教程(Web) - 管理服务端的会话和消息

文档简介:
环信即时通讯 IM SDK 在消息服务器上存储历史消息。当聊天用户从其他设备登录或加入群组后,你可以从服务器检索历史消息,以便用户也可以在新设备上浏览这些消息。本文介绍如何实现用户从消息服务器获取会话和消息。
*此产品及展示信息均由环信官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

环信即时通讯 IM SDK 在消息服务器上存储历史消息。当聊天用户从其他设备登录或加入群组后,你可以从服务器检索历史消息,以便用户也可以在新设备上浏览这些消息。本文介绍如何实现用户从消息服务器获取会话和消息。

提示

本文介绍的功能均为增值服务,需在环信即时通讯 IM 管理后台 (opens new window)开通。

技术原理

利用环信即时通讯 IM SDK 可从服务器获取会话和历史消息。

  • getConversationlist 分页获取会话列表以及会话中的最新一条消息;
  • getHistoryMessages 按服务器接收消息的时间顺序获取服务器上保存的指定会话中的消息;
  • removeHistoryMessages 单向删除服务端的历史消息;
  • deleteConversation 删除服务器端会话及其对应的消息。

前提条件

开始前,请确保已完成 SDK 初始化并连接到服务器,详见 快速开始。

实现方法

从服务器分页获取会话列表

对于单聊或群聊,用户发消息时,会自动将对方添加到用户的会话列表。

你可以调用 getConversationlist 方法从服务端分页获取会话列表,每个会话包含最新一条历史消息。

提示

  1. 若使用该功能,需将 SDK 升级至 V4.1.3。
  2. 登录用户的 ID 大小写混用会导致拉取会话列表时提示会话列表为空,因此避免大小写混用。
  3. 服务端会话列表的更新存在延时,建议你在登录时调用该方法,其他时段可更新缓存中的会话列表。
  4. 获取的会话列表中不包含最新一条消息通过 RESTful 接口发送的会话。若需获取该类会话,需要联系商务开通将通过 RESTful 接口发送的消息写入会话列表的功能。

// pageNum:当前页面,从 1 开始。 // pageSize:每页获取的会话数量。取值范围为 [1,20]。 connection.getCon
versationlist({pageNum: 1, pageSize: 20}).then((res) => {}) 
 

对于使用 getConversationlist 方法未实现分页获取会话的用户,SDK 默认可拉取 7 天内的 10 个会话(每个会话包含最新一条历史消息),如需调整会话数量或时间限制请联系商务。

从服务器获取指定会话的历史消息

你可以调用 getHistoryMessages 方法从服务器获取指定会话的消息(消息漫游)。你可以指定消息查询方向,即明确按时间顺序或逆序获取。为确保数据可靠,我们建议你每次最多获取 50 条消息,可多次获取。拉取后,SDK 会自动将消息更新到本地数据库。

let options = { // 对方的用户 ID 或者群组 ID 或聊天室 ID。 targetId: "user1", // 每页期望获取的消息条数。
取值范围为 [1,50],默认值为 20。 pageSize: 20, // 查询的起始消息 ID。若该参数设置为 `-1`、`null` 或空字符串,
从最新消息开始。 cursor: -1, // 会话类型:(默认) `singleChat`:单聊;`groupChat`:群聊。 chatType: 
"groupChat", // 消息搜索方向:(默认)`up`:按服务器收到消息的时间的逆序获取;`down`:按服务器收到消息的时间的正序获取。
 searchDirection: "up", }; WebIM.conn .getHistoryMessages(options) .then((res) => { // 成功获取历史消息。 console.log
(res); }) .catch((e) => { // 获取失败。 }); 
 

单向删除服务端的历史消息

你可以调用 removeHistoryMessages 方法按照时间或消息 ID 单向删除服务端的历史消息。每次最多可删除 50 条消息。消息删除后,该账号无法从服务端拉取到该消息。其他用户不受该操作影响。多端多设备登录时,删除成功后会触发 onMultiDeviceEvent#deleteRoaming 回调。

提示

若使用该功能,需将 SDK 升级至 V4.1.2 或以上版本并联系商务开通。

示例代码如下:

// 按时间删除消息 connection.removeHistoryMessages({targetId: 'userId', chatType: 'singleChat', beforeTimeStamp: 
Date.now()}) // 按消息 ID 删除消息 connection.removeHistoryMessages({targetId: 'userId', chatType: 'singleChat',
 messageIds: ['messageId']}) 
 

删除服务器端会话及其对应的消息

你可以调用 deleteConversation 方法删除服务器端会话及其对应的消息。

let options = { // 会话 ID:单聊为对方的用户 ID,群聊为群组 ID。 channel: "channel", // 会话类型:(默认)
 `singleChat`:单聊;`groupChat`:群聊。 chatType: "singleChat", // 删除会话时是否同时删除服务端漫游消息。 
deleteRoam: true, }; WebIM.conn .deleteConversation(options) .then((res) => { console.log(res); })
 .catch((e) => { // 删除失败。 });

相似文档
  • 单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
  • 为方便用户在聊天过程中对文字消息进行翻译,环信即时通讯 IM SDK 集成了 Microsoft Azure Translation API,支持在发送或接收消息时对文本消息进行按需翻译或自动翻译:
  • 用户属性指实时消息互动用户的信息,如用户昵称、头像、邮箱、电话、性别、签名和生日等。 例如,在招聘场景下,利用用户属性功能可存储性别、邮箱、用户类型(面试者)、职位类型(Web 研发)等。查看用户信息时,可直接查询服务器存储的用户属性信息。
  • SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理: 好友列表管理:查询好友列表、申请添加好友、同意好友申请、拒绝好友申请和删除好友等操作。 黑名单管理:查询黑名单列表、添加用户至黑名单以及将用户移出黑名单等操作。
  • 功能描述: 群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可以收到群中的消息,可以在群中发送消息。群成员离线时可以收到推送消息。群组成员支持多种角色:群主、群管理员和普通成员。群组提供丰富的管理能力,如群组禁言、群公告和群文件等。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部