用户在线、离线、忙碌功能设计与实现
2017-08-13 19:26
483 查看
需求:
需要在系统中展现,系统中用户的状态。展示用户是否在线、忙碌或者离线。做法:
使用 webSocket 建立链接,通过实时推送用户信息,达到用户状态的更新。当用户登录时自动设置用户状态为上线,并推送用户信息到 前端。
当用户离线时自动设置用户状态为离线状态,并推送给前端。
通过 定时任务扫描在线用户,当在线用户的最后操作时间于当前时间差大于30 分钟(session失效时间),设置用户状态为离线。并将该用户状态推送给前端。
前端维护当前在线用户列表
设计:
在用户表中新增字段 “status“ 和 “last_time“。“status “用来标注 用户当前的状态: “last_time“ 用来记录用户最后操作的时间。ALTER TABLE user ADD COLUMN `last_time` datetime COMMENT '最后一次操作时间'; ALTER TABLE user ADD COLUMN `status` int(11) DEFAULT '4' COMMENT '用户登录状态,1 : 在线 2 离开 3 忙碌 4 离线';
编写更新用户“status“ 和 “last_time“字段方法实现。每次更新“status“字段时更新“last_time“ 为当前时间(登出操作除外)
在登录时更新用户“status“为 上线 , “last_time“为当前时间。并推送用户信息给前端。
在登出时更新用户“status“为 下线 。并推送用户信息给前端。
当用户手动修改当前用户的状态为“离开“或“忙碌“时,后端修改用户状态,并将修改结果推送给前端,用户维护当前在线用户列表。
在拦截器中拦截用户的操作,用户每次操作之后都更新用户的“last_time“。并推送用户信息给前端。
编写定时任务扫描“status“ 为上线的用户,比较用户的“last_time“于当前时间的时间差,当时间差大于30 分钟(session失效时间),设置用户“status“为离线状态。并将该用户状态推送给前端。
在前端做一个用户信息统一封装,各个地方显示的用户状态信息都从该方法中获取。该方法在用户登录系统后,向后端发送请求,拉取当前系统在线用户的状态。然后通过后端的websocket 推送信息来维护 当前在线用户的列表。(当有新用户上线则向列表中添加该用户,有用户登出,则将用户从该列表剔除。)
实现很简单:就是简单的增删改查,
webSocket参考博客:http://blog.csdn.net/u012373815/article/details/54380476
相关文章推荐
- Android基于AlarmManager实现用户在线心跳功能示例
- iOS开发:一个高仿美团的团购ipad客户端的设计和实现(功能:根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除等)
- 制定性能测试策略时,如何设计相应的系统用户数、同时在线并发用户数以及每个具体功能的并发用户数
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(九) 之 用 Redis 实现用户在线离线状态消息处理(一)
- ajax实现用户在线离线
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(八) 之 用 Redis 实现用户在线离线状态消息处理
- C# usb Hid 访问上位机USB通讯实例 实现设备在线或者离线和发送接收数据通讯功能
- 模块管理常规功能自定义系统的设计与实现(06--第一个用户模块)
- java在线聊天项目1.3版设计好友列表框功能补充,因只要用户登录就发送一串新列表,导致不同客户端好友列表不同问题
- 使用flexpaper实现在线预览功能时 ,遇到的flash缓存问题的解放方案
- 基于百度地图实现产品销售的单位位置查看功能设计与实现
- 需求实现:点击用户评论列表项,弹出输入法并进行编辑回复功能
- 利用filereader实现在线预览图片功能
- 利用html5的本地存储功能实现登录用户信息保存
- Android 集成阿里百川实现在线客服、聊天功能
- 通用权限系统框架功能实现设计
- TabHost ----使用1(用代码来实现功能但没有将界面设计和代码分开)
- 上亿在线用户维护最高效的设计思想,二进制位存储变更的应用场景
- 企业管理软件开发之八 多国语言功能设计与实现
- 智能厨房重构-使用Bmob后端云实现用户注册登录的功能。