融云im撤回消息
由于疫情原因,公司基于融云做了个在线的聊天室,之前增加了一些聊天室的基础功能,最近呢由于需求补充,需要把消息撤回加上。
官方文档说明地址:
https://docs.rongcloud.cn/v4/views/im/noui/guide/chatroom/msgmanage/msgrecall/web.html
撤回消息代码如下:
recall() {
const conversation = this.im.Conversation.get({
targetId: this.targetUser.id,
type: this.targetUser.conversationType
});
conversation.recall({
messageUId: this.currentMsg.messageUId,
sentTime: this.currentMsg.sentTime
}).then((message) => {
this.$message.success('撤回成功');
const msg = Object.assign({extra: {nickname: this.currentUser.nickname}}, message);
this.handleMessage(msg, false);
});
},
在此要注意,撤回成功之后是不会触发会话的监听的,需要自己在成功的回调里面处理撤回的消息。撤回消息处理代码如下:
if (message.messageType === 'RC:RcCmd') {
const msg = Object.assign({tip: `${isSelef ? '您': nickname}撤回了一条消息`}, message);
if (messageIds.includes(message.content.messageUId)) {
const index = messageIds.indexOf(message.content.messageUId);
this.messageList.splice(index, 1, msg);
} else {
this.messageList.push(message);
}
} else {
this.messageList.push(message);
}
当对方在消息监听中收到上述的消息时,也可以调用上述的方法进行撤回消息处理。
撤回消息现在是没有时间限制的,如果要加上时间限制,可以根据消息的sentTime处理。
至此,消息撤回已成功集成。集成中发现了一个问题,撤回的消息在会话列表中还存在,已经给融云提交工单,看后续能不能处理。
融云官网地址:https://www.rongcloud.cn/
融云开发文档地址:https://docs.rongcloud.cn/v4/