默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 我想将消息保存到mysql数据库中去,怎么做比较好?
我想将聊天消息保存到mysql中去
目前有两个问题困扰着我
1.onTransBuffer_C2C_CallBack 这个方法中 我收到了消息,然后保存到数据库中,但是这个方法里面的消息 不只是消息内容 ,而且还会有指纹消息。
2.当客户端重发时,onTransBuffer_C2C_CallBack这个方法会被重复调用,但是我只想把发送成功的消息保存到数据库,也就是我只想保存一条


应该怎么做比较好?


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

标签:MobileIMSDK

Snip20171023_4.png (105.19 KB, 下载次数: 1912)

Snip20171023_4.png
上一篇:[已回复] 经常会出现MobileIMSDK客户端的userId为-1的情况?应该怎么避免这种情况?下一篇:[已解决] 关于用PHP后台向RabbitMQ推送消息到MobileIMSDK服务器的问题
推荐方案
评论 6
用指纹码去重,mysql有专门的指令很容易处理的,参考这一篇文章:
mysql insert if not exists防止插入重复记录的方法(转)

另外,你的一条消息为何会被重复这么多次,这不正常,你改了什么逻辑?
我将重发次数改成了99999
引用:JackJiang 发表于 2017-10-23 17:28
用指纹码去重,mysql有专门的指令很容易处理的,参考这一篇文章:
《mysql insert if not exists防止插入 ...

我不想保存指纹码
我只想保存发送成功的消息

onTransBuffer_C2C_CallBack这个方法里 只能拿到3 个参数
(int userId, int from_user_id, String dataContent)

不能同时拿到 消息内容 和消息内容对应的指纹码


应该怎么做?
帮帮我
引用:吴佳同 发表于 2017-10-24 09:25
我不想保存指纹码
我只想保存发送成功的消息

你用的是MobileIMSDK v2是吧,如果是MobileIMSDK v3里则这个回调方法会把fingerPrint带过来。

其实,你也有办法解决,写代码还是需要些想象力的:你客户端在调用发送方法的时候,自已来生成fingerPrint(其实就是Protocal.genFingerPrint()这个方法生成指纹码),然后在你的dataContent里把这个fingerPrint人为带上,不就可以了。
相当于对dataContent进行了一层的封装
然后对方收到后再解封条

感谢Jack
引用:吴佳同 发表于 2017-10-24 16:37
相当于对dataContent进行了一层的封装
然后对方收到后再解封条

打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部