服务器设置了单机登陆,如果监听当前设备被抢登?

guqun 2020-7-9 709

如题,谢谢

最新回复 (16)
  • guqun 2020-7-9
    引用 2
    目前使用addConnectionChangeListener监听。不知道是否准确?
    且不知道具体的status的含义,能否告知?
  • HeavyRain 2020-7-10
    引用 3

    连接状态监听会监听到 keymismatch或tokenincorrenct或logout状态,当监听到这些状态时可以提示用户已经退出登录,然后退回到登录界面

  • guqun 2020-7-15
    引用 4
    如果两台设备同时登陆,发现两台都可以成功,并且可以同时接收信息。
    如果不是同时登陆,确实可以通过上面的状态监听进行业务操作。
    请问这个是什么问题?应该如何解决?
  • HeavyRain 2020-7-16
    引用 5
    请详细描述一下测试方法
  • guqun 2020-7-16
    引用 6
    服务器会在很小的时间间隔内发起getUserToken请求
    日志如下:
    2020-07-16 09:49:07.016 [qtp887750041-13] INFO  cn.wildfirechat.sdk.utilities.AdminHttpUtils - http request response content: {"code":0,"msg":"success","result":{"userId":"2","token":"U/BOQrZWKRZd810saolzeSFtOyaX4/sufR+HAiYE1gCH1yJtN/3WK4laUJmwQSGwDEPcHiauSOlup5+gClf8o8qXY2zRoPbOQragQfwWsnlEleIUbXxujDQBgyrUyh5fajFkjLpWaxhDo7RDagp3HQ\u003d\u003d"}}
    2020-07-16 09:49:07.016 [qtp887750041-18] INFO  cn.wildfirechat.sdk.utilities.AdminHttpUtils - http request response content: {"code":0,"msg":"success","result":{"userId":"2","token":"U/BOQrZWKRZd810saolzedP58tgbzh8PcgQLUZrAMvW8uKscr3J0eUH0NHy5Tl41t4m7ai8znnxSMZzP4ZKGSoX9kp/+UG6Zm1dNIFQU1iMdx/CRyEpHrBma0By1uZqVsWtldgnOaUv/u/IDO8i2GA\u003d\u003d"}}
    客户端拿到这个token之后,会马上发起connect请求。然后两台Android设备都可以正常的发送接收消息。
    ps:确认服务器设置了单机登陆,如果两台设备不是同时登陆,ConnectionStatusSecretKeyMismatch信息可以接收到。
  • HeavyRain 2020-7-16
    引用 7
    很小的时间间隔是大概什么量级的,是10秒左右,1秒左右还是100毫秒左右?
  • guqun 2020-7-16
    引用 8
    HeavyRain 很小的时间间隔是大概什么量级的,是10秒左右,1秒左右还是100毫秒左右?
    1毫秒左右
  • guqun 2020-7-17
    引用 9
    guqun 1毫秒左右
    这个问题有解决方案吗?应该是比较好重现的
  • HeavyRain 2020-7-17
    引用 10
    这个问题是个典型的并发问题,同时过来两个请求,每个请求都是要创建session,设置缓存,清理其它的session,并发执行就会出现问题。

    问题的解决就是加锁,一个创建完了才创建另外一个。但我们认为这样不值得,因为这种场景在实际环境中根本不可能出现,另外就是即使有人可以利用这个问题,结局也就是可以登录上两个手机,也没有什么危害性。所以我们建议不修改。

    当然如果你要坚持也可以解决,在应用服务器请求token的地方加锁,保证同一个用户的请求token是顺序执行就OK了
  • guqun 2020-7-17
    引用 11
    HeavyRain 这个问题是个典型的并发问题,同时过来两个请求,每个请求都是要创建session,设置缓存,清理其它的session,并发执行就会出现问题。 问题的解决就是加锁,一个创建完了才创建另外一个。但我们 ...
    感谢提供解决方案。我先用加锁的方式尝试一下
  • guqun 2020-7-17
    引用 12
    guqun 感谢提供解决方案。我先用加锁的方式尝试一下
    服务端两次请求token的操作间隔120ms,,,还是可以同时登陆server,,,,感觉不是并发问题,请关注一下,谢谢
  • guqun 2020-7-17
    引用 13
    guqun 感谢提供解决方案。我先用加锁的方式尝试一下
    另,两个同时登陆在我们的应用中影响还是蛮大的。我们有自定义的业务消息,如果两个可以同时登陆,会导致两台终端同时处理一个业务操作。期待有解决方案,谢谢了
  • HeavyRain 2020-7-19
    引用 14

    服务端两次请求token的操作间隔120ms,,,还是可以同时登陆server,,,, 是第一个获取token返回之后才去请求第二个的吗?还是第一个没有返回就发出去了第二个?

  • guqun 2020-7-20
    引用 15
    HeavyRain 服务端两次请求token的操作间隔120ms,,,还是可以同时登陆server,,,, 是第一个获取token返回之后才去请求第二个的吗?还是第一个没有返回就发出去了第二个?
    返回之后才有第二次请求的。
  • guqun 2020-7-22
    引用 16
    HeavyRain 服务端两次请求token的操作间隔120ms,,,还是可以同时登陆server,,,, 是第一个获取token返回之后才去请求第二个的吗?还是第一个没有返回就发出去了第二个?
    这个bug麻烦跟进一下,我基本确认是server的问题。谢谢了
  • guqun 2020-7-24
    引用 17
    麻烦关注一下这个问题,谢谢
返回