请选择 进入手机版 | 继续访问电脑版

默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求助关于MobileIMSDK服务端离线消息重复存储的问题
以为最近在测MobileIMSDK的时候,发现Java服务端会收到离线消息时 onTransBuffer_C2C_RealTimeSendFaild_CallBack这个函数会被调用3次,这样导致了服务端存储离线消息时会有3次的存储消息的操作,虽然sdk有写着可以根据 fingerPrint 也就是 该消息对应的指纹 去做判断,防止重复存储,但我还是想问一下,用字符串去判断,是否会存在线程安全的问题,谢谢

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] 求教关于MobileIMSDK服务端sdk安全验证方面的一些问题下一篇:[已回复] 求助为MobileIMSDK的移动客户端发送消息增加时间戳的问题

本帖已收录至以下技术专辑

推荐方案
评论 4
服务端的这个函数被调用3次是不合理的。

其实,onTransBuffer_C2C_RealTimeSendFaild_CallBack函数的返回true,即告诉SDK核心层你的业务层已处理好离线消息,客户端就不会再尝试重传消息,服务端的同一条消息,也就不会进这个回调3次了。

你仔细读一下API说明(上面的链接点进去就是):
WX20191109-111142@2x.png
签名: 《零基础IM开发入门(三):什么是IM系统的可靠性?》http://www.52im.net/thread-3182-1-1.html
引用:JackJiang 发表于 2019-11-09 11:12
服务端的这个函数被调用3次是不合理的。

其实,onTransBuffer_C2C_RealTimeSendFaild_CallBack函数的返 ...

好的,非常感谢
引用:JackJiang 发表于 2019-11-09 11:12
服务端的这个函数被调用3次是不合理的。

其实,onTransBuffer_C2C_RealTimeSendFaild_CallBack函数的返 ...

我这儿也出现这个问题,不过出现的地方是在群消息部分,当发出群消息后,数据库有可能出现三条一模一样的消息,我有想过用事务管理,但是还是有问题
1:是否有可能是因为客户端在请求服务端时,未收到服务端返回的true,则自动进入消息重发阶段,而我从服务端同事了解得知,该重发机制也是3次,是否有可能是这种情况造成消息三条一样的
2:还有,这三条消息的fingerprint不一样,是否能够做到当进入消息重发的时候,使用的fingerPrint一样,从而当服务端进行消息fingerprint去重时,将同一条消息只显示一次
引用:流离 发表于 2020-09-04 16:17
我这儿也出现这个问题,不过出现的地方是在群消息部分,当发出群消息后,数据库有可能出现三条一模一样的 ...

1、未收到true理论情况下是有可能的,但如果频繁这样,肯定就是另有原因;
2、重传的包,fingerprint一定是一样的,如果不一样,那就是另有原因。

你可以单独开一贴,详细描述一下,我帮你也分析一下看看是什么问题。
签名: 《零基础IM开发入门(三):什么是IM系统的可靠性?》http://www.52im.net/thread-3182-1-1.html
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部