默认

我的IM在线列表用户的切换导致出现短暂的连接失败

查看数: 42074 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-09-27 21:51

正文摘要:

场景是这样的,当用户进入APP的时候,会以设备信息imei连接IM服务,也就是说userId 和 token都是传入imei,连接成功,并将imei 对应的session放入离线列表中,当用户以用户名密码登陆APP的时候,我需要将他从离线列 ...

评论

柳老三 发表于 7 年前
引用:JackJiang 发表于 2017-09-28 10:46
其实我想问的是,你为什么要弄两个列表呢。

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

  多谢  多谢  
zhangR 发表于 7 年前
JackJiang 发表于 7 年前
其实我想问的是,你为什么要弄两个列表呢。

你的需求其实可以这样:原先的列表还是那个列表,只是登陆的时候带上来的参数不一样(存到它在服务端的session里),当它的身份转换了之后,你更新这个session里的这个存的字段值内容,这样的话不就不需要改变整个算法框架了,难度要小多了。

至于你怎么用这个列表里的数据,你根据这个字段的值再来区分一下,这样的修改就要优雅多了。

我不清楚你具体要的是什么,但解决问题通常回归到本质就能找到最省事的方法,通常简单的就是最好的。一定不要搞复杂,否则会越来越复杂,直到失控。
JackJiang 发表于 7 年前
引用:柳老三 发表于 2017-09-27 22:10
客户端在什么情况会出现 尚未登录的信息? 是 响应包没有收到?还是有其它的判别方式?好像看代码只有这 ...

唯一的情况就是服务端的用户列表中没有它,但实际上它的session在MINA这一层还是正常的,极有可能是你错误地删除了。复现这个问题很简单,你就用一个客户端,针对性的测试的你的代码肯定可以复现,并找出问题的。
柳老三 发表于 7 年前
引用:JackJiang 发表于 2017-09-27 21:58
你的逻辑需要优化:
肯定是先放入在线列表后,再删除原来的离线列表。考虑到极端情况下,如果在线列表加入 ...

客户端在什么情况会出现 尚未登录的信息? 是 响应包没有收到?还是有其它的判别方式?好像看代码只有这一种情况吧
JackJiang 发表于 7 年前
你的逻辑需要优化:
肯定是先放入在线列表后,再删除原来的离线列表。考虑到极端情况下,如果在线列表加入失败,而你离线列表也已被删除,这该怎么办等等。你先删除后加的逻辑是不够健壮的。

返回顶部