默认
发表评论 15
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK的OnUserLoginAction_CallBack...回调方法问题
不知道为什么,我登录后没多少秒他就回调退出登录的接口!但问题是我客户端没有退出登录!下面就是java控制台的信息!这个问题是不是初始化的时候出的问题,他自动去回调退出的接口。

正在调用回调方法:OnVerifyUserCallBack...3333 3333
正在调用回调方法:OnUserLoginAction_CallBack...
【DEBUG_QoS_S2C事件】收到系统的未实时送达事件通知,当前共有1个包QoS保证机制结束,判定为【无法实时送达】!
正在调用回调方法:OnUserLogoutAction_CallBack...


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

上一篇:[已解决] 用MoblieIMSDK Android 源码编译导致Demo掉线的问题下一篇:[已回复] MoblieIMSDK报转换json错误

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

推荐方案
评论 15
你这个问题比较典型,群里的其它人也碰到过,理论上应该是你的网络问题,我来帮你分析一下:
1)你的客户端请求到服和端能触发回调,则意味着客户端到MobileIMSDK 服务端的单向连接能正常通信;
2)这条“DEBUG_QoS_S2C事件”的log输出,很明显是服务端在反馈给客户端“成功登陆”信息时,没有成功发给客户端。

综上,应该是服务端到你客户端的通信无法完成。你需要排查server到client这个方向的通路,请找到客户端的ip地址(服务端的log就能看到),然后在服务端器上ping客户端,看看能不能ping通,我猜是ping不通的!(ping通则证明server到client的通信不会有问题)。

上次群里的兄弟反馈这个问题的原因是,它们公司的局域网是个很复杂的网络,而手机真机的无线网跟服务器电脑的网并不在一个网段,具体原因跟他们网管商量,设置一下就可以了。你也照这个思路去排查吧。
在搞IM开发进行手机真机调试时,因为服务器在内网,很多人经常会遇到无线网络跟电脑内网有线网络的通讯问题。
你照我2楼的回复去排查,基本上就能确定原因了。
引用:JackJiang 发表于 2016-04-08 10:06
你这个问题比较典型,群里的其它人也碰到过,理论上应该是你的网络问题,我来帮你分析一下:
1)你的客户 ...

那这个我需要怎么操作啊!!
引用:hahacheng 发表于 2016-04-08 10:15
那这个我需要怎么操作啊!!

我说的很清楚了,尝试在你运行MobileIMSDK服务端的电脑上Ping你的手机ip地址,看能不能ping通(别告诉我你不知道ping是啥意思啊)
引用:JackJiang 发表于 2016-04-08 10:16
我说的很清楚了,尝试在你运行MobileIMSDK服务端的电脑上Ping你的手机ip地址,看能不能ping通(别告诉我 ...

正在 Ping 192.168.191.1 具有 32 字节的数据:
来自 192.168.191.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.191.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.191.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.191.1 的回复: 字节=32 时间<1ms TTL=64

192.168.191.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms


但是之前的demo用这个地址不会出现上诉那种自动退出的情况
引用:hahacheng 发表于 2016-04-08 10:24
正在 Ping 192.168.191.1 具有 32 字节的数据:
来自 192.168.191.1 的回复: 字节=32 时间

你是用模拟器还是真机?你这不像是手机的真机地址,你可能Ping错了。把服务端的log多贴一点出来,我看它的ip是多少。

你可以用我官方的demo来连我部署的远程服务器,如果我的Demo没问题,那必然是你内网的问题,这很容易想通。
引用:JackJiang 发表于 2016-04-08 10:29
你是用模拟器还是真机?你这不像是手机的真机地址,你可能Ping错了。把服务端的log多贴一点出来,我看它 ...

真机测试啊,我将你官方的demo修改上诉ip也不存在这个问题!还有就是这个ip是我通过电脑的一个wifi软件生成的
控制台的log就这些

正在调用回调方法:OnVerifyUserCallBack...
正在调用回调方法:OnUserLoginAction_CallBack...
正在调用回调方法:OnUserLogoutAction_CallBack...
【DEBUG_QoS_S2C事件】收到系统的未实时送达事件通知,当前共有1个包QoS保证机制结束,判定为【无法实时送达】!
引用:hahacheng 发表于 2016-04-08 10:32
真机测试啊,我将你官方的demo修改上诉ip也不存在这个问题!还有就是这个ip是我通过电脑的一个wifi软件生 ...

服务端的Log可不只这么多,请看这图里的这个,这才是手机的ip地址,你可能理解错了:
[已回复] MobileIMSDK的OnUserLoginAction_CallBack...回调方法问题_mobileimsdk_log.png

你把这log贴的全一点,手机ip就在里面!
引用:JackJiang 发表于 2016-04-08 10:46
服务端的Log可不只这么多,请看这图里的这个,这才是手机的ip地址,你可能理解错了:

郁闷,怎么发送不了图片的!!


[INFO] - [10:52:16.274][IMCORE]与{uid:null,cid:-1}/192.168.191.2:56047的会话(sessionOpened)打开了... | (ServerCoreHandler^sessionOpened:572)
[DEBUG] - [10:52:16.275]Event SESSION_OPENED has been fired for session 1 | (IoFilterEvent^fire:117)
[INFO] - [10:52:16.522][IMCORE]>> 客户端{uid:null,cid:-1}/192.168.191.2:56047发过来的登陆信息内容是:getLoginName=1111|getLoginPsw=1111 | (ServerCoreHandler^messageReceived:276)
[DEBUG] - [10:52:16.522]正在调用回调方法:OnVerifyUserCallBack...(extra=null) | (ServerEventListenerImpl^onVerifyUserCallBack:27)
正在调用回调方法:OnVerifyUserCallBack...(extra=null)
[DEBUG] - [10:52:16.569]Firing a MESSAGE_SENT event for session 1 | (IoFilterEvent^fire:68)
[DEBUG] - [10:52:16.569]【@】当前在线用户共(1)人-------------------> | (UserProcessor^__printOnline:120)
[DEBUG] - [10:52:16.569]Event MESSAGE_SENT has been fired for session 1 | (IoFilterEvent^fire:117)
[DEBUG] - [10:52:16.570]正在调用回调方法:OnUserLoginAction_CallBack... | (ServerEventListenerImpl^onUserLoginAction_CallBack:36)
正在调用回调方法:OnUserLoginAction_CallBack...
[DEBUG] - [10:52:16.570]Event MESSAGE_RECEIVED has been fired for session 1 | (IoFilterEvent^fire:117)
[DEBUG] - [10:52:16.582]Firing a MESSAGE_RECEIVED event for session 1 | (IoFilterEvent^fire:68)
[INFO] - [10:52:16.583]>> 收到客户端{uid:1111,cid:16}/192.168.191.2:56047的通用数据发送请求. | (ServerCoreHandler^messageReceived:114)
[DEBUG] - [10:52:16.583]【IMCORE】【QoS机制_S2C】收到16发过来的指纹为d591c401-c3f6-42d0-a27f-7b63861da69f的应答包. | (ServerCoreHandler^messageReceived:136)
[WARN] - [10:52:16.583]【IMCORE】【QoS发送方】指纹为d591c401-c3f6-42d0-a27f-7b63861da69f的消息已成功从发送质量保证队列中移除(可能是收到接收方的应答也可能是达到了重传的次数上限),重试次数=0 | (QoS4SendDaemonS2C^remove:389)
[DEBUG] - [10:52:16.583]Event MESSAGE_RECEIVED has been fired for session 1 | (IoFilterEvent^fire:117)
[DEBUG] - [10:52:19.049]【IMCORE】【QoS发送方】=========== 消息发送质量保证线程运行中, 当前需要处理的列表长度为0... | (QoS4SendDaemonS2C^run:166)
[DEBUG] - [10:52:19.616]Firing a MESSAGE_RECEIVED event for session 1 | (IoFilterEvent^fire:68)
[DEBUG] - [10:52:19.619]Event MESSAGE_RECEIVED has been fired for session 1 | (IoFilterEvent^fire:117)
[DEBUG] - [10:52:19.619]Firing a MESSAGE_SENT event for session 1 | (IoFilterEvent^fire:68)
[DEBUG] - [10:52:19.619]Event MESSAGE_SENT has been fired for session 1 | (IoFilterEvent^fire:117)
[DEBUG] - [10:52:22.627]Firing a MESSAGE_RECEIVED event for session 1 | (IoFilterEvent^fire:68)



我这个算ping通?
C:\Users\Jc>ping 192.168.191.2

正在 Ping 192.168.191.2 具有 32 字节的数据:
来自 192.168.191.2 的回复: 字节=32 时间=323ms TTL=64
来自 192.168.191.2 的回复: 字节=32 时间=232ms TTL=64
来自 192.168.191.2 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.191.2 的回复: 字节=32 时间=85ms TTL=64

192.168.191.2 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 1ms,最长 = 323ms,平均 = 160ms

点评

JackJiang  说:
之前也有人说过,我没在意。为什么传不了图片?按钮出不来?还是上传失败报错?  (8 年前)
引用:hahacheng 发表于 2016-04-08 10:53
郁闷,怎么发送不了图片的!!

我都感觉不是ip问题啊,同一个ip在另外一个demo上是不会出现这种情况的!但是到了我项目这边就会自动退出..另外一个demo和现在的服务器是同一个服务器,所以问题可能出现客户端这边?
引用:hahacheng 发表于 2016-04-08 10:53
郁闷,怎么发送不了图片的!!

对的,这才是ping真机的效果,不然ping无线网络不可能都是小于1毫秒的。
这说明你的电脑上ping手机是能ping的通的,也就是说理论上服务端连手机端不会有问题。

那么,看你这日志,显示MobileIMSDK的客户端跟服务端已经是正常通信了呢,你在逗我呢!
引用:JackJiang 发表于 2016-04-08 11:08
对的,这才是ping真机的效果,不然ping无线网络不可能都是小于1毫秒的。
这说明你的电脑上ping手机是能p ...

点击上传图片按钮,不会出现选择文件得功能!!回到问题上,我现在就怀疑客户端这边的问题啊,怎么登录后无端端会调用退出的接口,何况我客户端也没去实现这个doLogout,好郁闷,还有什么会导致这种情况?是sdk初始化问题?
引用:hahacheng 发表于 2016-04-08 11:15
点击上传图片按钮,不会出现选择文件得功能!!回到问题上,我现在就怀疑客户端这边的问题啊,怎么登录后 ...

我日~好像真的是初始化IMClientManager.getInstance(this).initMobileIMSDK();
我把这句话直接放到主界面去初始化,但是现在把他放到application就好像可以
引用:hahacheng 发表于 2016-04-08 11:19
我日~好像真的是初始化IMClientManager.getInstance(this).initMobileIMSDK();
我把这句话直接放到主界 ...

你10楼帖出来的Log里显示,客户端跟服务端已经是正常通信,很健康啊?
你主题里显示的断开连接,是因为服务端根本不能发送数据给客户端,如果现在还有这个问题,你自已想办法排查。这种问题都还没到代码上呢,只能算是调试环境没搞定,你再好好试试。

图片上传请点击“高级模式”!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部