默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已解决] MobileIMSDK的V3版本经常有客户端连接服务端,客户端无响应
MobileIMSDK的V3版本经常有客户端连接服务端,客户端无响应,一直是下图这样,点击关闭也无响应。
这个事件感觉是随机的,客户端正常和非正常的打印的日志是一样的。
从日志上看连接应该是正常的,是不是客户端有问题?
[已解决] MobileIMSDK的V3版本经常有客户端连接服务端,客户端无响应_11111.png

客户端无响时:
客户端日志:
DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [2017-7-6 12:02:44]
DEBUG - 【IMCORE】Socket处于未初化状态(可能是您还未登陆),无需关闭。 [2017-7-6 12:02:44]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==false,需要先resetLocalUDPSocket()... [2017-7-6 12:02:44]
DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [2017-7-6 12:02:44]
DEBUG - 【IMCORE】Socket处于未初化状态(可能是您还未登陆),无需关闭。 [2017-7-6 12:02:44]
DEBUG - 【IMCORE】new DatagramSocket()中... [2017-7-6 12:02:44]
DEBUG - 【IMCORE】new DatagramSocket()已成功完成. [2017-7-6 12:02:44]
DEBUG - 【IMCORE】本地UDP端口侦听中,端口=0... [2017-7-6 12:02:44]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==true,直接返回本地socket引用哦。 [2017-7-6 12:02:44]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==true,直接返回本地socket引用哦。 [2017-7-6 12:02:44]
PROMPT - 【DEBUG_UI】IM服务器登录/连接成功! [2017-7-6 12:02:44]
DEBUG - 【IMCORE】【QoS】=========== 消息发送质量保证线程运行中, 当前需要处理的列表长度为0... [2017-7-6 12:02:44]
DEBUG - 【IMCORE】【QoS接收方】++++++++++ START 暂存处理线程正在运行中,当前长度1. [2017-7-6 12:02:44]
DEBUG - 【IMCORE】【QoS接收方】++++++++++ END 暂存处理线程正在运行中,当前长度1. [2017-7-6 12:02:44]


客户端无响时:
服务端日志:
2017-07-06 12:02:44,564 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]与{uid:null}/127.0.0.1:1338的会话建立(sessionCreated)了...>
2017-07-06 12:02:44,565 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]与{uid:null}/127.0.0.1:1338的会话(sessionOpened)打开了...>
2017-07-06 12:02:44,566 INFO [net.openmob.mobileimsdk.server.processor.LogicProcessor] - <[IMCORE]>> 客户端{uid:null}/127.0.0.1:1338发过来的登陆信息内容是:loginInfo=1|getToken=1>
2017-07-06 12:02:44,566 DEBUG [net.openmob.mobileimsdk.server.demo.ServerEventListenerImpl] - <【DEBUG_回调通知】正在调用回调方法:OnVerifyUserCallBack...(extra=null)>
2017-07-06 12:02:44,567 DEBUG [net.openmob.mobileimsdk.server.processor.OnlineProcessor] - <【@】当前在线用户共(1)人------------------->>
2017-07-06 12:02:44,567 DEBUG [net.openmob.mobileimsdk.server.processor.OnlineProcessor] - <      > user_id=1,session=/127.0.0.1:1338>
2017-07-06 12:02:44,568 DEBUG [net.openmob.mobileimsdk.server.demo.ServerEventListenerImpl] - <【IM_回调通知OnUserLoginAction_CallBack】用户:1 上线了!>
2017-07-06 12:02:44,631 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]>> 收到客户端{uid:1}/127.0.0.1:1338的ACK应答包发送请求.>
2017-07-06 12:02:44,631 DEBUG [net.openmob.mobileimsdk.server.processor.LogicProcessor] - <[IMCORE-本机QoS!]【QoS机制_S2C】收到接收者1回过来的指纹为756f8388-00c1-4cf4-af85-4abb737a83de的应答包.>
2017-07-06 12:02:44,631 DEBUG [net.openmob.mobileimsdk.server.demo.MessageQoSEventS2CListnerImpl] - <【DEBUG_QoS_S2C事件】收到对方已收到消息事件的通知,fp=756f8388-00c1-4cf4-af85-4abb737a83de>
2017-07-06 12:02:44,631 WARN [net.openmob.mobileimsdk.server.qos.QoS4SendDaemonRoot] - <【IMCORE-本机QoS】【QoS发送方】指纹为756f8388-00c1-4cf4-af85-4abb737a83de的消息已成功从发送质量保证队列中移除(可能是收到接收方的应答也可能是达到了重传的次数上限),重试次数=0>
2017-07-06 12:02:55,224 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]与{uid:1}/127.0.0.1:1338的会话关闭(user_id=1)了...>
2017-07-06 12:02:55,225 DEBUG [net.openmob.mobileimsdk.server.demo.ServerEventListenerImpl] - <【DEBUG_回调通知OnUserLogoutAction_CallBack】用户:1 离线了!>

就是这里直接关闭了,不知道为什么。



客户端正常时:
客户端日志:
DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [2017-7-6 12:05:32]
DEBUG - 【IMCORE】Socket处于未初化状态(可能是您还未登陆),无需关闭。 [2017-7-6 12:05:32]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==false,需要先resetLocalUDPSocket()... [2017-7-6 12:05:32]
DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [2017-7-6 12:05:32]
DEBUG - 【IMCORE】Socket处于未初化状态(可能是您还未登陆),无需关闭。 [2017-7-6 12:05:32]
DEBUG - 【IMCORE】new DatagramSocket()中... [2017-7-6 12:05:32]
DEBUG - 【IMCORE】new DatagramSocket()已成功完成. [2017-7-6 12:05:32]
DEBUG - 【IMCORE】本地UDP端口侦听中,端口=0... [2017-7-6 12:05:32]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==true,直接返回本地socket引用哦。 [2017-7-6 12:05:32]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==true,直接返回本地socket引用哦。 [2017-7-6 12:05:32]
PROMPT - 【DEBUG_UI】IM服务器登录/连接成功! [2017-7-6 12:05:32]
DEBUG - 【IMCORE】【QoS】=========== 消息发送质量保证线程运行中, 当前需要处理的列表长度为0... [2017-7-6 12:05:32]
DEBUG - 【IMCORE】【QoS接收方】++++++++++ START 暂存处理线程正在运行中,当前长度1. [2017-7-6 12:05:32]

DEBUG - 【IMCORE】【QoS接收方】++++++++++ END 暂存处理线程正在运行中,当前长度1. [2017-7-6 12:05:32]






客户端正常时:
服务端日志:

2017-07-06 12:05:32,491 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]与{uid:null}/127.0.0.1:58708的会话建立(sessionCreated)了...>
2017-07-06 12:05:32,492 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]与{uid:null}/127.0.0.1:58708的会话(sessionOpened)打开了...>
2017-07-06 12:05:32,494 INFO [net.openmob.mobileimsdk.server.processor.LogicProcessor] - <[IMCORE]>> 客户端{uid:null}/127.0.0.1:58708发过来的登陆信息内容是:loginInfo=1|getToken=1>
2017-07-06 12:05:32,494 DEBUG [net.openmob.mobileimsdk.server.demo.ServerEventListenerImpl] - <【DEBUG_回调通知】正在调用回调方法:OnVerifyUserCallBack...(extra=null)>
2017-07-06 12:05:32,496 DEBUG [net.openmob.mobileimsdk.server.processor.OnlineProcessor] - <【@】当前在线用户共(1)人------------------->>
2017-07-06 12:05:32,496 DEBUG [net.openmob.mobileimsdk.server.processor.OnlineProcessor] - <      > user_id=1,session=/127.0.0.1:58708>
2017-07-06 12:05:32,497 DEBUG [net.openmob.mobileimsdk.server.demo.ServerEventListenerImpl] - <【IM_回调通知OnUserLoginAction_CallBack】用户:1 上线了!>
2017-07-06 12:05:32,555 INFO [net.openmob.mobileimsdk.server.ServerCoreHandler] - <[IMCORE]>> 收到客户端{uid:1}/127.0.0.1:58708的ACK应答包发送请求.>
2017-07-06 12:05:32,556 DEBUG [net.openmob.mobileimsdk.server.processor.LogicProcessor] - <[IMCORE-本机QoS!]【QoS机制_S2C】收到接收者1回过来的指纹为0195f41c-97d3-4112-bd02-f82a0ffbed08的应答包.>
2017-07-06 12:05:32,556 DEBUG [net.openmob.mobileimsdk.server.demo.MessageQoSEventS2CListnerImpl] - <【DEBUG_QoS_S2C事件】收到对方已收到消息事件的通知,fp=0195f41c-97d3-4112-bd02-f82a0ffbed08>

2017-07-06 12:05:32,556 WARN [net.openmob.mobileimsdk.server.qos.QoS4SendDaemonRoot] - <【IMCORE-本机QoS】【QoS发送方】指纹为0195f41c-97d3-4112-bd02-f82a0ffbed08的消息已成功从发送质量保证队列中移除(可能是收到接收方的应答也可能是达到了重传的次数上限),重试次数=0>

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

标签:MobileIMSDK
上一篇:[已回复] 求教MobileIMSDK v2版服务器卡顿问题下一篇:[已回复] MobileIMSDK有没有C++的客户端开发指南

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

推荐方案
评论 4
这只是个Demo界面,这个仿Android的Toast的UI功能写的不够好,其实是存在死锁风险的,所以原因就是界面事件主线程可能存在线程不安全的问题。

你自已把这个Toast给去掉试试。或者用Android和iOS的客户端去试。
如果你一定要想知道原因,我建议你用jProfile打开这个java客户端,然后卡住的时候你就可以看到一定是有线程被block了。我下次把这个Demo给优化一下,现在很容易让人误会核心IM代码有问题.
引用:JackJiang 发表于 2017-07-06 14:24
这只是个Demo界面,这个仿Android的Toast的UI功能写的不够好,其实是存在死锁风险的,所以原因就是界面事件 ...
我看日志是知道核心框架没有问题,是正常的连接了的。
问题原因没有找到,没有下载jProfiler去分析了,
不过找到了解决方法:
在LoginGUI.java的initForLogin()方法,这行代码前frame.setVisible(true);先休眠一段时间(我设置的是500毫秒),
然后就正常了,试了多次都没有出现无响应的情况了。
[已解决] MobileIMSDK的V3版本经常有客户端连接服务端,客户端无响应_22222.jpg
引用: 十三 发表于 2017-07-06 16:25
我看日志是知道核心框架没有问题,是正常的连接了的。
问题原因没有找到,没有下载jProfiler去分析了,
...

是的,问题的原因就是Demo的Java Swing代码因为多线程原因出现了死锁,这demo的界面本来就只是用来演示的,知道原因就知道怎么解决了,我在下一个版里里解决它。
最新补充:此问题已在MobileIMSDK v3.0b20170718版里解决
详见最新代码:https://github.com/JackJiang2011/MobileIMSDK/releases,特此告之。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部