文章概述这是第四篇文章,昨天我们的代码终于打开了,开始吧,今天我们慢慢实现IM中需要的各个模块,今天我们实现对话好友列表的显示,废话不多说,直接开始吧。session好友列表的实现1.监听回调事件在开发中,我们可以通过监听回调事件被动获取session变化,通过API主动获取session缓存数据。主动获取SDK底层缓存的session列表数据,回调是最新的,一般来说回调的时效性高于API。主动获取会话列表:getConversationList(){let{data}=awaitthis.$txim.getConversationList(this.nextSeq,999)this.nextSeq=data.nextSeqdata.conversationList=data.conversationList||data.conversationsletconversationList=data.conversationList.sort((a,b)=>b.lastMessage.timestamp-a.lastMessage.timestamp)this.conversationList=conversationList}监听对话消息变化//初始化对话列表并监听对话listchangesthis.$txim.$on('onNewConversation',this.onConversationHandler)this.$txim.$on('onConversationChanged',this.onConversationHandler)回调事件处理:asynconConversationHandler({data}){//datahere是session变化的列表,需要判断是增加还是改变(通过item.conversationID判断)for(letitemofdata){letindex=this.conversationList.findIndex(R=>R.conversationID===item.conversationID)if(index>=0){this.conversationList.splice(index,1,item)}else{this.conversationList.push(item)}}},2.同步刷新读取一般来说,我们接收到就读取数据标记,所以我们需要监听消息事件判断当前聊天记录是否刷新。事件监听器://监听新消息this.$txim.$on('onRecvC2CTextMessage',this.onRecvMessageHanlder)//个人短信this.$txim.$on('onRecvC2CCustomMessage',this.onRecvMessageHanlder)//个人高级messagethis.$txim.$on('onRecvGroupTextMessage',this.onRecvMessageHanlder)//群组短信this.$txim.$on('onRecvGroupCustomMessage',this.onRecvMessageHanlder)//群组高级消息this.$txim.$on('onRecvNewMessage',this.onRecvMessageHanlder)//普通消息(非高级)回调事件处理:asynconRecvMessageHanlder({data}){letisC2C=!!(data.sender.userID||data.sender)letsender=数据.发件人.userID||data.sender.groupIDif(this.currentChatId==sender){isC2C?this.$txim.markC2CMessageAsRead(sender):这个。$txim.markGroupMessageAsRead(sender)}}3.删除session消息说明有新增,对应删除本地session消息。我们要注意删除本地会话消息。删除后只有本地聊天消息消失,云端依然存在,开发者可以在腾讯云后台配置历史记录天数doDeleteItem(item){//这里的item通过接口回调letindex=this.conversationList.findIndex(R=>R.conversationID==item.conversationID)this.$txim.deleteConversation(item.conversationID)this.conversationList.splice(index,1)}项目开源地址及交流群项目成品效果查看:请点击项目介绍项目开源地址:https://gitee.com/ckong/Zhimi...Uniapp开发交流群:755910061
