默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
IM异端登录互踢的技术实现问题求助
阅读(46438) | 评论(8 收藏 淘帖
大神,求指教!!!!在进行同账号异端登录实现的时候,也会出现给自己发退出消息提醒。一个手机登录之后断线,另一个手机进行登录同一账号,但是登录失败,并发了一条异端登录的信息,这是什么原因呢?
在进行登录验证成功之后,自己写了一个接口,接口内容为:1.客户端主页面登录时,会传入当前时间戳,若当前有登录同一账号会进行踢人操作(给对方发送44退出指令),把时间戳放在map(格式为《用户id,时间戳》)集合里保存起来并登录成功返回0。2.当为自动重连状态时,会传入之前的时间戳,若map集合里有数据进行时间戳比较,若小于集合中的时间戳则判定为被踢,返回-2.若相等则登陆成功返回0;
问题是:当一部手机登录之后杀掉进程,在另一部手机登录的时候,登录不上去并给自己发了一条44退出指令

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

标签:IM开发
上一篇:IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?下一篇:IM中已建立长连接的情况下,用它给app推送和用极光推有什么差距?
推荐方案
评论 8
你把思路整理一下,逻辑清晰有条理地把你的问题描述清楚,你这样说的乱七八糟,没法理解啊
在进行登录验证成功之后,自己写了一个接口,接口内容为:1.客户端主页面登录时,会传入当前时间戳,若当前有登录同一账号会进行踢人操作(给对方发送44退出指令),把时间戳放在map(格式为《用户id,时间戳》)集合里保存起来并登录成功返回0。2.当为自动重连状态时,会传入之前的时间戳,若map集合里有数据进行时间戳比较,若小于集合中的时间戳则判定为被踢,返回-2.若相等则登陆成功返回0;
问题是:当一部手机登录之后杀掉进程,在另一部手机登录的时候,登录不上去并给自己发了一条44退出指令
Channel 类型 怎么区分是同一端登录还是异端登录的?
引用:xushuhua 发表于 2018-06-12 16:02
Channel 类型 怎么区分是同一端登录还是异端登录的?

Chennle相当于一个会话或一个连接的概念,不同的端,建立的不是同一个,不需要你自已区分。
你可以在用户登陆成功把userid存到channle里,另一个端登陆时,就判断拥有同一个userid的所有channler,并决定你的互踢逻辑该怎么实现。
引用:JackJiang 发表于 2018-06-12 16:13
Chennle相当于一个会话或一个连接的概念,不同的端,建立的不是同一个,不需要你自已区分。
你可以在用 ...

但是在进行重连时,之前的set集合里已经拥有原来的Chennle,踢人的时候会给自己发送一条退出信息,怎么破?
引用:xushuhua 发表于 2018-06-12 16:22
但是在进行重连时,之前的set集合里已经拥有原来的Chennle,踢人的时候会给自己发送一条退出信息,怎么破 ...

你可以在每个端登陆时,由服务端分配给它一个唯的token,再次来的时候带过来比较一下不就知道是不是自已了
引用:JackJiang 发表于 2018-06-12 16:31
你可以在每个端登陆时,由服务端分配给它一个唯的token,再次来的时候带过来比较一下不就知道是不是自已 ...

安卓登陆接口我返回时间戳,为啥会显示im连接失败呢
引用:xushuhua 发表于 2018-06-12 19:19
安卓登陆接口我返回时间戳,为啥会显示im连接失败呢

一步一步跟踪一下,做网络通信程序每一个步骤都不要留死角,不能凭感觉
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部