默认
发表评论 9
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已解决] 求助!MobileIMSDK消息离线处理回调会被调用4次?
为什么im发送信息做离线处理的时候,他提醒4次  “客户端1111发给客户端111111的消息:str=1111因实时发送没有成功,需要上层应用作离线处理哦,否则此消息将被丢弃.”    不是只是回调一次这个方法?

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

上一篇:[已回复] 关于MobileIMSDK的登录验证疑问下一篇:[已回复] MobileIMSDK如何实现图片、语音留言信息的发送?
推荐方案
评论 9
你代码怎么写的,最好能贴出来。
是ServerEventListener.onTransBuffer_C2C_RealTimeSendFaild_CallBack 回调吗?
http://docs.52im.net/extend/docs ... eSendFaild_CallBack(int, int, java.lang.String, java.lang.String)
我大概能猜到你的疑问在哪了,请先贴你的代码哦。
引用:JackJiang 发表于 2016-03-24 12:10
是ServerEventListener.onTransBuffer_C2C_RealTimeSendFaild_CallBack 回调吗?
http://docs.52im.net/ex ...

@Override
	public boolean onTransBuffer_C2C_RealTimeSendFaild_CallBack(int userId,
			int from_user_id, String dataContent, String fingerPring)
	{
		System.out.println("客户端"+from_user_id+"发给客户端"+userId+"的消息:str="+dataContent
				+"因实时发送没有成功,需要上层应用作离线处理哦,否则此消息将被丢弃."+" fingerPring="+fingerPring);
		try {
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			Message mess = new Message();
			mess.setM_content(dataContent);
			mess.setM_fromID(from_user_id+"");
			mess.setM_toID(userId+"");
			mess.setM_type("1");
			mess.setM_date(df.format(new Date()));
			tedao.SaveOfflineMessage(mess);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	
		return false;
	}
引用:hejiacheng2016 发表于 2016-03-24 04:50
[mw_shl_code=actionscript3,true]@Override
        public boolean onTransBuffer_C2C_RealTimeSendFaild_Cal ...

跟我猜的一样!

你仔细看清楚api文档的说明哦,此回调方法返回false则意味着服务端没有处理离线,那么客户端的QoS机制感知到消息未被送达,进而自动开启3次重传,加上发送的那1次,一共就是4次了,所以你在服务端的这个回调里看到的就是4次。

正确的作法是,如果你在此回调里正确地处理了离线消息,返回true即可,不信你试试。
引用:JackJiang 发表于 2016-03-24 13:12
跟我猜的一样!

你仔细看清楚api文档的说明哦,此回调方法返回false则意味着服务端没有处理离线, ...

好的!谢谢

返回true怎么还是执行3次了

1.png (1.45 KB, 下载次数: 2783)

1.png

2.png (10.72 KB, 下载次数: 2918)

2.png
引用:hahacheng 发表于 2016-04-22 14:18
返回true怎么还是执行3次了

你要是怀疑真的返回true的情况下还会被执行3次,我建议你做一个检单的测试:把这个方法无条件返回true,看看回调是怎么表现!

我看到你这个回调里tray catch里 exception时会返回false,所以请排除你代码的问题,不然你会把简单的事情复杂化!

RE: 求助!MobileIMSDK消息离线处理回调同一条消息会被调用多次?

[已解决] 求助!MobileIMSDK消息离线处理回调会被调用4次?_TIM图片20190628165028.png
[已解决] 求助!MobileIMSDK消息离线处理回调会被调用4次?_2.png

[已解决] 求助!MobileIMSDK消息离线处理回调会被调用4次?_1.png

都返回true但是还是回调了多次
引用:往事随风 发表于 2019-06-28 16:57
都返回true但是还是回调了多次

这个回调,只要你返回true,客户端就只会发送一次,如果是false,重传逻辑就会继续(大约3次重传)。

具体看API文档的说明:点此查看
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部