

四、Uniapp+vue+腾讯IM+腾讯音视频开发聊天APP,支持消息收发,音视频通话(附开源源...
source link: https://segmentfault.com/a/1190000041224925
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

这已经是第四篇了,昨天我们代码总算开了个头,今天我们来开始慢慢实现IM中需要的各个模块,今天我们来实现会话好友列表的显示,话不多说,直接开撸。
会话好友列表的实现
1.监听回调事件
在开发中,我们可以通过监听回调事件的方式被动获取会话变更,以及通过api主动获取会话缓存数据,主动获取的是sdk底层缓存的会话列表数据,而回调的则是最新的,一般而言回调的时效性高于api。
主动获取会话列表:
getConversationList () { let{ data } = await this.$txim.getConversationList(this.nextSeq, 999) this.nextSeq = data.nextSeq data.conversationList = data.conversationList || data.conversations let conversationList = data.conversationList.sort((a,b) => b.lastMessage.timestamp - a.lastMessage.timestamp) this.conversationList = conversationList }
监听会话消息变更:
// 初始化会话列表并且监听会话列表变化 this.$txim.$on('onNewConversation', this.onConversationHandler) this.$txim.$on('onConversationChanged', this.onConversationHandler)
回调事件处理:
async onConversationHandler ({ data }) { // 这里的data是会话变更的列表,需要判断是新增还是变更(通过item.conversationID判断) for (let item of data) { let index = 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) // 个人高级消息 this.$txim.$on('onRecvGroupTextMessage', this.onRecvMessageHanlder) // 群组文本消息 this.$txim.$on('onRecvGroupCustomMessage', this.onRecvMessageHanlder) // 群组高级消息 this.$txim.$on('onRecvNewMessage', this.onRecvMessageHanlder) // 普通消息(非高级)
回调事件处理:
async onRecvMessageHanlder({ data }) { let isC2C = !!(data.sender.userID || data.sender) let sender = data.sender.userID || data.sender.groupID if (this.currentChatId == sender) { isC2C ? this.$txim.markC2CMessageAsRead(sender) : this.$txim.markGroupMessageAsRead(sender) } }
3.删除会话消息
有显示有新增,那也就对应的有删除本地会话消息,删除本地会话消息我们要注意一点,删除之后只是本地聊天消息消失,云端依然存在,开发者可以自行在腾讯云后台配置历史记录天数。
doDeleteItem (item) { // 这里的item是通过界面回调的 let index = 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
Recommend
-
12
基于HBuilderX+UniApp+ColorUi+UniCloud 优宝库 开发实战(一) 1. 优宝库介绍 优宝库是基于阿里妈妈、淘宝联盟 淘宝商品Api,前端使用HBuilderX + UniApp + ColorUi,后端采用UniClound 精选淘宝商品进行推荐的Ap...
-
17
在前面随笔的介绍中,我们已经为各种框架,已经准备了Web API、Winform端、Bootstrap-Vue的公司动态网站前端、Vue&Element的管理前端等内容,基本都是基于Web API基础的。完成这些基础准备和布局后,我们继续将技术的触角放到使用Vue语言开发小程序的场景中...
-
7
一、项目概述uniapp-ttlive 一款基于uni-app+uview-ui+vue.js+uapopup等技术混合开发的多端仿制抖音短视频/直播/聊...
-
6
在《使用uView UI+UniApp开发微信小程序》的随笔中,介绍了基于uView UI+UniApp开发微信小程序的一些基础知识和准备工作,其中也大概介绍了一下基本的登录过程,本篇随笔详细介绍一下微信小程...
-
7
在前面随笔《使用uView UI+UniApp开发微信小程序》和《使用uView UI+UniApp开发微信小程序--判断用户是否登录并跳转》介绍...
-
5
基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能。1: 聊天会话管理2: 好友列表3: 文字、语音、视频、表情、位置等聊天消息收发4: 一对一语音视频在线通话开...
-
15
基于 golang+uniapp 开发的一套微信小程序电商系统 V2EX › 程序员 基于 golang+uniapp 开发的一套微信小程序电商系统
-
3
uniapp+nvue实现仿微信App聊天应用 —— 成功实现好友聊天+语音视频通话功能发布于 11 月 2 日基于uniapp + nvue实现的uniapp仿微信App聊天应用 txim 实例项...
-
3
各位看官可能要失望了,都第二篇了居然还是一行代码都没看到,别急别急,记得磨刀不误砍柴工。因为我们用到了腾讯云的SDK,所以我们在开发之前第一步就是要把腾讯云的AppId搞定,搞定AppId之后,还得去搞定用户信息,要不咋玩登录,往哪发消息啊。所以我...
-
8
基于uniapp+vite4+pinia跨多端实现chatgpt会话模板Uniapp-ChatGPT。 uni-chatgpt 使用uni-app+vite4+vue3+pinia+uview-plus等技术构建多端仿制ChatGPT手机端APP会话应用模板。支持编译到h5+小程序+APP端,支持渲染markdown语法及代...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK