引用:天道有情战天下 发表于 2018-08-23 17:44 嗯嗯 |
引用:JackJiang 发表于 2018-08-23 17:32 好的,感谢官方大佬 |
引用:天道有情战天下 发表于 2018-08-23 11:46 那没有办法,客户端异常掉线的情况下,服务端的判定是个有延迟时间的,没有办法立即知道的,这是常识。客户端跟服务端的连接状态是用心跳来保证的,这个延迟就是心跳的间隔。你可以体会一下,如果是你来实现这个判定策略,你该怎么写。 |
MoibleIMSDK的逻辑是成功送出的消息才走onTransBuffer_C2C_CallBack,没有成功送出或对方已离线的情况下才走onTransBuffer_C2C_RealTimeSendFaild_CallBack(真如这个方名的命名含义一样),所以重复的可能性发生于:对方在线但本次网络发送没有成功。 这种情况属于极端情况,并不是常态。 所以,最简单的解决办法就是判断消息指纹码,如果存在就不用重复插到数据库了。这样的处理逻辑你也不用担心性能问题,因为插库并不需要多即时,以后你可以用MQ做中件间,im这边只管扔到mq上,而mq那边你再写一个独立的消息者,让它再去慢慢取消息并存库。这样就不会影响Im的性能了(因为插库这种涉及io的操作,对于高性能高吞吐的im来说肯定会是性能瓶颈了)。 不知你是否理解了我的意思 |