默认
发表评论 7
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
我的IM在线列表用户的切换导致出现短暂的连接失败
阅读(38820) | 评论(7 收藏 淘帖
场景是这样的,当用户进入APP的时候,会以设备信息imei连接IM服务,也就是说userId 和 token都是传入imei,连接成功,并将imei 对应的session放入离线列表中,当用户以用户名密码登陆APP的时候,我需要将他从离线列表切换到在线列表,去除掉离线列表中imei 信息,放入userid 对应session到在线列表,这会的session即是之前imei存入离线的session ,在我感觉通讯应该一直通着,但客户端这边有时候 就会收到  “尚未登录,发起登陆请求” 这样的信息,重新连接IM服务。
      目前我分析 觉得是 当我在切换的时候,首先会从离线列表中删除imei信息,再以useId 存入在线列表,我觉得是在这个时候 客户端由于在列表中没有找到,而给客户端了一个尚未登陆的假象,不知道我的猜想对不对,希望各位大婶 能帮忙想想

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

上一篇:[已回复] 关于MobileIMSDK的iOS版收到消息应答回调的疑问下一篇:IM聊天界面ui显示的消息发送时间和我接收到的时间 ,如何实现比较好?
推荐方案
评论 7
引用:JackJiang 发表于 2017-09-27 21:58
你的逻辑需要优化:
肯定是先放入在线列表后,再删除原来的离线列表。考虑到极端情况下,如果在线列表加入 ...

客户端在什么情况会出现 尚未登录的信息? 是 响应包没有收到?还是有其它的判别方式?好像看代码只有这一种情况吧
引用:JackJiang 发表于 2017-09-27 21:58
你的逻辑需要优化:
肯定是先放入在线列表后,再删除原来的离线列表。考虑到极端情况下,如果在线列表加入 ...

还有就是我在切换的时候,首先以imei去离线中去查找session,找不到的话 我会试着去在线中找,如果俩者都没有找到,我是不是需要给客户端返回个错误码,让客户端重新连接一次

3.png (34.82 KB, 下载次数: 2471)

3.png
引用:JackJiang 发表于 2017-09-28 10:46
其实我想问的是,你为什么要弄两个列表呢。

你的需求其实可以这样:原先的列表还是那个列表,只是登陆的 ...

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

返回顶部