关于在线状态处理方式的求助?

颖辉小居 发布于 2016/03/23 13:37
阅读 145
收藏 0

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

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

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

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

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

加载中
1
幺哥

粗暴点,服务器重启时把所有用户都置为离线状态,

温柔点,可以把session放到数据库或者缓存,重启服务后,可以保持会话

0
buglife
buglife
写个定时脚本,监测心跳啊
0
阿信sxq
阿信sxq
启动的时候全部置为离线
0
开源中国首席不想说话
开源中国首席不想说话
简单点 做一个列表保存在线的用户ID。退出就移除,登录就加入。服务器重启内存数据自然就没了
0
乌龟壳
乌龟壳

方法一,暴力法。tomcat重启前所有用户设置成离线

方法二,不用默认的session方式,设置session存储到memcache或者文件里

返回顶部
顶部