七、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天消息项的实现

本文介绍了如何使用Uniapp结合腾讯IM和音视频服务,开发一个仿微信的即时通讯APP。详细讲解了聊天消息的收发、格式化、回显以及聊天消息弹出菜单的实现,同时涵盖音视频通话功能的集成。
摘要由CSDN通过智能技术生成

会话好友列表的实现

1、项目引言
2、腾讯云后台配置TXIM
3、配置项目并实现IM登录
4、会话好友列表的实现
5、聊天输入框的实现
6、聊天界面容器的实现
7、聊天消息项的实现
8、聊天输入框扩展面板的实现
9、聊天会话管理的实现
10、聊天记录的加载与消息收发
11、定位SD配置与收发定位消息
12、贴图表情的定制化开发
13、腾讯云后台配置TRTC功能
14、集成音视频通话功能
15、集成仿微信的拍照,相册选择插件
16、集成美颜功能
17、集成TPNS消息推送(暂未接入)



文章概述

整个IM项目的关键点来了,本文将讨论一下聊天消息的实现,如何收发消息并且实现聊天消息的UI显示。


聊天消息项的实现

1.收发聊天消息

1.1 接收聊天消息

接收聊天消息显得很简单,在之前的会话列表实现中已经做过一次,这次我们代码其实差不多,唯一不一样的是接受后我们需要做筛选确定需要回显到聊天消息界面的项目。
绑定消息事件部分的代码如下:

// 这里选择在onLoad绑定,确定不会漏接数据
async onLoad (params) {
   
   // 做好一个变量确定我现在在和谁聊天
   this.receiver = params.receiver
   // 监听新的消息
   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 V2TIMMessageManager = this.$txim.getMessageManager()
   let senderId = data?.sender?.userID || data?.sender
   if (senderId == this.receiver) {
   
     this.HistoryMessageToChatLog([data])
     this.$txim.markC2CMessageAsRead(senderId)
     await this.$nextTick()
     this.$refs.chatLayout.scrollToBottom()
   }
 },

1.2 发送聊天消息

发送聊天消息实际上demo已经有所封装了,对于文本消息而言发送的代码如下:

// 发送文字 这里需要防抖处理,反正多次点击发送按钮从而出现问题
sendText: _.debounce(async function (text) {
   
  let V2TIMMessageManager = this.$txim.getMessageManager()
  // 创建消息结构体
  let v2TIMMessage = V2TIMMessageManager.
KakaopayAmt": "", "IsBlue": "", "BlueResultNo": "", "BlueAmt": "", "IsAsiana": "", "AsianaResultNo": "", "AsianaAmt": "", "IsSmilecard": "", 腾讯IM提供了适用于 Vue.js 的即时通讯 SDK,可以方便地在 Vue.js 目中 "SmilecardResultNo": "", "SmilecardAmt": "", "IsHanaskcard": "", "Hanaskcard使用。使用前需要先引入 SDK,并且需要在腾讯IM 控制台上创建应用并获取 SDKAppIDResultNo": "", "HanaskcardAmt": "", "IsHanaone": "", "HanaoneResultNo": "", 和密钥信息。 以下是使用腾讯IM SDK 在 Vue.js 中实现简单的即时通讯功能的示 "HanaoneAmt": "", "IsLotte": "", "LotteResultNo": "", "LotteAmt":例代码: ```html <template> <div> <div v-for="msg in msgList" :key="msg.time "", "IsHyundaione": "", "HyundaioneResultNo": "", "HyundaioneAmt": "", ""> <p>{{ msg.sender }}: {{ msg.content }}</p> <small>{{ msg.time }}</small> </div> IsNonghyupone": "", "NonghyuponeResultNo": "", "NonghyuponeAmt": "", <input v-model="inputMsg" @keydown.enter="sendMsg" /> </div> </template> <script> import TIM from ' "IsSamsungone": "", "SamsungoneResultNo": "", "SamsungoneAmt": "", "IsWoorionetim-js-sdk' export default { data() { return { tim: null, userID: 'user1', convID": "", "WoorioneResultNo": "", "WoorioneAmt": "", "IsShinhancardone": "", : 'conv1', inputMsg: '', msgList: [] } }, mounted() { this.initIM() "ShinhancardoneResultNo": "", "ShinhancardoneAmt": "", "IsHyundaicardone }, methods: { initIM() { this.tim = TIM.create({ SDKAppID: 'xxx', // 替换为": "", "HyundaicardoneResultNo": "", "HyundaicardoneAmt": "", "IsSamsun自己的 SDKAppID userID: this.userID, userSig: 'xxx' // 替换为自己的密钥ghappyone": "", "SamsunghappyoneResultNo": "", "SamsunghappyoneAmt": "", 信息 }) this.tim.on(TIM.EVENT.MESSAGE_RECEIVED, this.handleMsgReceived) this.tim.login() }, sendMsg() "IsNonghyupcardone": "", "NonghyupcardoneResultNo": "", "Nonghyupcard { const msg = this.tim.createTextMessage({ to: this.convID, payload: { text: this.inputMsg } }) this.tim.sendMessage(msg) this.msgList.push({ sender: this.userID, content: this.inputMsg, oneAmt": "", "IsHappymoneycardone": "", "HappymoneycardoneResultNo": "", " time: new Date().toLocaleString() }) this.inputMsg = '' }, handleMsgReceived(event) { const msgHappymoneycardoneAmt": "", "IsCulturesurvivalone": "", "CulturesurvivaloneResult = event.data[0] this.msgList.push({ sender: msg.from, content: msg.payload.text, time: newNo": "", "CulturesurvivaloneAmt": "", "IsDongaone": "", "DongaoneResultNo Date(msg.time * 1000).toLocaleString() }) } } } </script> ``` 这个示例中,": "", "DongaoneAmt": "", "IsGmarketone": "", "GmarketoneResultNo": "", 我们使用了 tim-js-sdk 库来操作腾讯IM,通过创建 TIM 实例来进行登录、发送消息、接收消息 "GmarketoneAmt": "", "IsEtcCardone": "", "EtcCardoneResultNo": "", "EtcCardoneAmt": "", "IsBlueone": "", "BlueoneResultNo": "", "BlueoneAmt": "", 等操作。在模板中,我们使用 v-for 指令来展示消息列表,并通过 v-model 指令来实现输入框的双向绑定,通过 @keydown.enter 事件监听来发送消息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值