最近在开过工作中用到了腾讯IM的功能,由于业务的需要主要使用到了:

1.loginInfo 用户登录,用户信息

2.getRecentContactList 获得最近联系人

3.getLastGroupHistoryMsgs 获取群聊天信息

4.getC2CHistoryMsgs 获取C2C的消息

5.sendMsg 消息的发送(图片、文字、自定义)

6.onMsgNotify 消息回调

在整体开发过程中,1-5相对开发比较顺畅,当时在消息回调的时候出现了问题

消息回调是比较重要的,是整个通讯模块的核心部分,所有消息的收发显示全依赖于此。

官方方法如下,说明也比较简单,并未标注一些特殊情况。

 1 //监听新消息事件
 2 //newMsgList 为新消息数组,结构为[Msg]
 3 function onMsgNotify(newMsgList) {
 4     //console.warn(newMsgList);
 5     var sess, newMsg;
 6     //获取所有聊天会话
 7     var sessMap = webim.MsgStore.sessMap();
 8     for (var j in newMsgList) {//遍历新消息
 9         newMsg = newMsgList[j];
10         if (newMsg.getSession().id() == selToID) {//为当前聊天对象的消息
11             selSess = newMsg.getSession();
12             //在聊天窗体中新增一条消息
13             //console.warn(newMsg);
14             addMsg(newMsg);
15         }
16     }
17     //消息已读上报,以及设置会话自动已读标记
18     webim.setAutoRead(selSess, true, true);
19     for (var i in sessMap) {
20         sess = sessMap[i];
21         if (selToID != sess.id()) {//更新其他聊天对象的未读消息数
22             updateSessDiv(sess.type(), sess.id(), sess.unread());
23         }
24     }
25 }

开始认为在该消息回调是只要有消息就会触发,但在开发中发现:

1.当自己C2C消息发送的时候,并未触发

2.当自己GROUP消息发送的时候,会触发

这样就导致,我们最初按照C2C消息监听逻辑开发的消息接收模块,应用到GROUP上的时候出现了,消息多次显示的问题

主要表现为,多端在线,其他端发送正常,本端发送异常

思考,可能是因为腾讯云认为如果消息为GROUP的时候会进行全员广播,而此时自己也是群成员的一部分;而C2C的时候则不会。

所以在开发中需注意几点:

1.本端发送消息,区分GROUP和C2C展示

2.消息接收,区分是本端还是其他端,如果是本端则不进行重复处理,这里需要在代码中标注

3.消息接收,区分是自己发送,还是别人发送

作者:旧旧的 <393210556@qq.com> 解决问题的方式,就是解决它一次

转载于:https://www.cnblogs.com/widgetbox/p/10550950.html

腾讯云通信WebIM事件回调的坑~相关推荐

  1. 数据恢复工程师视角看腾讯云静默损坏事件

    腾讯云在这次事件中的结论表述为因受所在物理硬盘固件版本Bug导致的静默错误,文件系统元数据损坏: 根据这个表述,故障应出现在硬盘固件故障导致的文件系统元数据损坏.这其中,涉及具备因果关系的三个知识点: ...

  2. 关于腾讯云丢数据事件的一些看法

    事件回顾: 创业公司"前沿数控"8月5日发文称,公司存放在腾讯云上的精准注册用户以及内容数据全部丢失,并且不能恢复,造成公司平台全部停运的状态.前沿数控表示,公司丢失的数据近千万元 ...

  3. 钉钉OA审批事件回调遇坑梳理-如何注册多个事件回调

    项目场景: 问题:使用钉钉http调用事件回调注册,遇坑 本项目有两套服务. 当 600 服务,在使用钉钉注册回调的接口后,再次注册800回调服务,800 回调会覆盖掉600服务 测试服务 600 正 ...

  4. android 集成腾讯定位,Android集成腾讯云通信IM

    本篇文章结构 一.集成流程. 二.集成中遇到的问题 集成过程 TIM图片20180425151417.png 很清楚,前几部没什么说的,去官网注册账号就好了,我们接下来看账号集成. 首先第一步是集成模 ...

  5. iOS开发接入腾讯云通信简略笔记

    本文只记录一些关键点,初始配置查看官方文档: TIMChat源码导读:https://cloud.tencent.com/document/product/269/3890 文档概述:https:// ...

  6. 【免费活动】解析腾讯云音视频通信三大核心网络技术实战与创新

    随着互联网的发展越来越成熟,移动终端成为我们人手必备的生活用品,云计算的普及与高速发展,4G.5G网络的瓜熟蒂落,我们真正的进入了全真互联网时代.2020年,一场突如其来的疫情,很多传统行业不得不将线 ...

  7. 解析腾讯云音视频通信三大核心网络技术实战与创新

    随着互联网的发展越来越成熟,移动终端成为我们人手必备的生活用品,云计算的普及与高速发展,4G.5G网络的瓜熟蒂落,我们真正的进入了全真互联网时代.2020年,一场突如其来的疫情,很多传统行业不得不将线 ...

  8. 腾讯云的静默损坏事件分析

    腾讯云在这次事件中的结论表述为因受所在物理硬盘固件版本Bug导致的静默错误,文件系统元数据损坏: 根据这个表述,故障应出现在硬盘固件故障导致的文件系统元数据损坏.这其中,涉及具备因果关系的三个知识点: ...

  9. 2021最新 腾讯通信云服务端使用心得,腾讯云IM

    腾讯通信云服务端使用心得 1.腾讯通信服务入口并创建应用 方便使用保留url地址 :   https://cloud.tencent.com/product/im 注册账号腾讯云账号->通过审核 ...

最新文章

  1. CentOS RPM安装MySQL 5.6修改默认密码
  2. php 之 数据访问 增删改查
  3. [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序
  4. mysql重连服务器失败_java – MySQL连接器错误“服务器时区值中...
  5. Java Web学习笔记10:Servlet基础
  6. java 线程等待_代码分析Java中线程的等待与唤醒
  7. Maven Dependency设置,详解!
  8. fluidsim元件库下载_fluidsim手册.pdf
  9. printer: PJL
  10. 电子元器件之电容如何测量
  11. DOSBox常用快捷键
  12. 罗尔定理、拉格朗日中值定理和柯西中值定理和用他们证明不等式、
  13. RabbitMQ的消息补偿机制
  14. 基于JavaWEB实现的学校健康码管理系统
  15. 手机支架3d打印模型_新型高效率酶固定化3D打印支架
  16. 转载SQL Server 数据库的性能优化
  17. 输入三角形边长,求三角形面积
  18. 环境类sci期刊排名一区_SCI计算机学术期刊排名(收藏对你有用)
  19. ArcMap中CGCS2000与WGS80坐标系转换
  20. 创客教师必备技能:Mixly第三方库开发

热门文章

  1. 牛客网练习,某公司2017秋招。叫车 2017年
  2. Spring中的事务控制(Transacion Management with Spring)
  3. DOS命令字典..收藏
  4. ubuntu 14.04 搜狗拼音安装
  5. 【计算机组成原理】计算机系统结构笔记:合集
  6. 上市十天高管大换血 甘李药业有隐疾?
  7. Tensorflow2.0版本下如何实现Kronecker积
  8. php mysql 家谱_mysql家谱表查询某人所有后代
  9. 穷人思维和富人思维,决定你一生的财富
  10. python中怎样在图片上画线段_python 实现PIL模块在图片画线写字