服务器怎么知道用户是不是还处于登陆状态?

鸣鸣Amadues SAP 应用开发  2019-01-02 11:13:53
可以在用户退出的时候通知服务器,但是如果用户强制关机了,就没有机会在客户端触发一段通知程序了,但如果要服务器主动不断地去call客户端,感觉开销又太大了,如果user很多的情况下。这种一般是怎么实现的,想请各位给点思路。
...全文
451 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31921491 2019-01-07
设置session
回复
bcsflilong 2019-01-07
做一个心跳机制
回复
RUA好多鱼~ 2019-01-07
只能是做登录状态的超时了
回复
码匠笔记 2019-01-07
看一下 WebSocket 用户打开浏览器链接一个 socket,任何情况关闭 socket 记录一下当前用户离开 小编为订阅号「码匠笔记」号主,先后就职于 ThoughtWorks、阿里巴巴等互联网公司的经验分享,包含但不限于 JAVA、并发编程、性能优化、架构设计、小程序、开源软件等。有兴趣可以关注一波,一起学习、讨论。
回复
老马历写记 2019-01-03
不知道您的是啥服务器?java还是php或其它,通常就是判断用户session是否存在:
1)类似session监听器,session创建、属性修改、退出有事件通知,可以处理;
2)第三方如redis集中存储,可以通过key过期事件提醒。
回复
nayi_224 2019-01-03
引用 3 楼 鸣鸣Amadues 的回复:
[quote=引用 1 楼 nayi_224 的回复:] 用户执行特定操作时,记录信息。用最后时间判断。
所以你的意思是判断标准不是用户关闭窗口的时间,而是最后一次操作的时间?[/quote] 用户直接杀进程应该是获取不到信息的。既然怎么都有问题,不如找些好做的方法...
回复
引用 4 楼 鸣鸣Amadues 的回复:
[quote=引用 2 楼 执笔记忆的空白 的回复:] 单点登录做了么?
跟单点登录有什么关系?[/quote] 抱歉,看错题了, 你这种非正常退出,除非你能检测到浏览器关闭时发送的事件。 要么就是设置用户超时时间,过期自动清理,比如session
回复
maradona1984 2019-01-03
非正常退出的话
web应用,基本靠session过期,或者只考虑请求时是否处于登录状态
长连接的应用靠心跳就能判断是否处于连接状态
回复
鸣鸣Amadues 2019-01-03
引用 2 楼 执笔记忆的空白 的回复:
单点登录做了么?
跟单点登录有什么关系?
回复
鸣鸣Amadues 2019-01-03
引用 1 楼 nayi_224 的回复:
用户执行特定操作时,记录信息。用最后时间判断。
所以你的意思是判断标准不是用户关闭窗口的时间,而是最后一次操作的时间?
回复
单点登录做了么?
回复
nayi_224 2019-01-03
用户执行特定操作时,记录信息。用最后时间判断。
回复
LDichao 2019-01-03
客户端定时发送心跳包
回复
鸣鸣Amadues 2019-01-03
引用 7 楼 执笔记忆的空白 的回复:
[quote=引用 4 楼 鸣鸣Amadues 的回复:]
[quote=引用 2 楼 执笔记忆的空白 的回复:]
单点登录做了么?

跟单点登录有什么关系?[/quote]

抱歉,看错题了, 你这种非正常退出,除非你能检测到浏览器关闭时发送的事件。 要么就是设置用户超时时间,过期自动清理,比如session[/quote]
应用层面最多也就是捕获浏览器正常关闭的事件,对于非正常关闭应该没办法。
回复
发动态
发帖子
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
社区公告
暂无公告