开发者社区> 问答> 正文

请教关于在线状态处理方式的问题

项目开发使用了SSH框架 tomcat服务容器,客户端为安卓APP。用户表中有一个boolean字段,表示是否在线(true为现在状态,false为离线状态)。用户登录请求会改变状态为在线,用户发送退出请求会改变状态为离线。同一个账户不能被多个设备同时登录,同一个账户同时登录后面的登录操作会失败。如果登录以后客户端异常关闭或者用户关机,服务器会监听session的销毁,来改变为下线状态。

问题来了,如果在用户登录后,服务器关闭了,用户连不上了,用户的登录状态在数据库里还是在线。等服务器重新启动以后会出现下面两个情况,

1 这个用户没有登录的时候,服务器都一直以为他还在登录,业务中查询客户的状态时得到的是错误的数据。

2 当这个客户要登录的时候,判断已经登陆了,这个用户被认为重复登录,永远登录失败。

请问解决这个问题的主流办法是什么了?大家有什么好建议。本人开发经验不多,自己遇到这个问题周围也没有什么可以讨论的人,只能求助大家了。

展开
收起
落地花开啦 2016-06-03 17:12:18 2375 0
2 条回答
写回答
取消 提交回答
  • 保存登录状态,三种保持会话的方式:
    1、session机制保持会话,高并发的时候可以将session存储到redis
    2、cookie机制保持会话,
    3、token机制保持会话,将token添加到http header或者做为参数添加到url。

    2019-07-17 19:26:54
    赞同 展开评论 打赏
  • 喜欢技术,喜欢努力的人

    1.服务器重启时把所有用户都置为离线状态,
    2.可以把session放到数据库或者缓存,重启服务后,可以保持会话

    2019-07-17 19:26:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载