首页 > 其他分享 >用户在线、离线、忙碌功能设计与实现

用户在线、离线、忙碌功能设计与实现

时间:2022-09-29 14:00:55浏览次数:47  
标签:status last 忙碌 离线 用户 time 推送 功能设计

需求:
需要在系统中展现,系统中用户的状态。展示用户是否在线、忙碌或者离线。

做法:
1. 使用 webSocket 建立链接,通过实时推送用户信息,达到用户状态的更新。
2. 当用户登录时自动设置用户状态为上线,并推送用户信息到 前端。
3. 当用户离线时自动设置用户状态为离线状态,并推送给前端。
4. 通过 定时任务扫描在线用户,当在线用户的最后操作时间于当前时间差大于30 分钟(session失效时间),设置用户状态为离线。并将该用户状态推送给前端。
5. 前端维护当前在线用户列表

设计:
在用户表中新增字段 “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 离线';

1. 编写更新用户“status“ 和 “last_time“字段方法实现。每次更新“status“字段时更新“last_time“ 为当前时间(登出操作除外)
2. 在登录时更新用户“status“为 上线 , “last_time“为当前时间。并推送用户信息给前端。
3. 在登出时更新用户“status“为 下线 。并推送用户信息给前端。
4. 当用户手动修改当前用户的状态为“离开“或“忙碌“时,后端修改用户状态,并将修改结果推送给前端,用户维护当前在线用户列表。
5. 在拦截器中拦截用户的操作,用户每次操作之后都更新用户的“last_time“。并推送用户信息给前端。
6. 编写定时任务扫描“status“ 为上线的用户,比较用户的“last_time“于当前时间的时间差,当时间差大于30 分钟(session失效时间),设置用户“status“为离线状态。并将该用户状态推送给前端。
7. 在前端做一个用户信息统一封装,各个地方显示的用户状态信息都从该方法中获取。该方法在用户登录系统后,向后端发送请求,拉取当前系统在线用户的状态。然后通过后端的websocket 推送信息来维护 当前在线用户的列表。(当有新用户上线则向列表中添加该用户,有用户登出,则将用户从该列表剔除。)

标签:status,last,忙碌,离线,用户,time,推送,功能设计
From: https://www.cnblogs.com/linjiqin/p/16741267.html

相关文章

  • Linux下Jenkins离线安装(war包)
    1、下载Jenkins.war包地址:https://mirrors.jenkins.io/war-stable/2.346.3/2、将Jenkins.war包上传到/usr/local/tomcat/webapps3、浏览器访问:http://192.168.150.128......
  • 如何从官网下载QT5开源版离线安装包
    一、浏览器访问qt官网地址https://www.qt.io二、点击DevelopmentTools三、点击DownloadQt四、点击Goopensource五、点击DownloadtheQtOnlineInst......
  • ceph17-quincy离线部署
    ceph-ansible集群搭建操作系统现在centos7版本主机名IPnode110.0.0.18node210.0.0.19node310.0.0.20操作系统虚拟化软件Ubuntu22.04......
  • pip 离线安装 gdal 更改为清华源
    condaactivatefirst激活虚拟环境first。python-V查看python版本。https://www.lfd.uci.edu/~gohlke/pythonlibs/下载与python版本匹配的whl包。虚拟环境......
  • 106-10-企业级离线数据仓库(二)_ev
              ......
  • linux 离线安装 mysql8.0
    一、下载linuxmysql8.0离线安装包mysql下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xzmysql官方下载最新版本:ht......
  • day05-离线留言和离线文件
    多用户即时通讯系统054.编码实现04(拓展)拓展功能:实现离线留言,如果某个用户不在线,当登陆后,可以接收离线的消息实现离线发文件,如果某个功能没有在线,当登录后,可以接收离......
  • 离线维护 支持插入数 的序列
    论离线维护插入单点碰到过好多类似的题,都在维护这个序列中卡住了,这是个简单易懂\(O(nlog^2_2n)\)我们考虑从后往前维护序列对于第n个插入的数,它最后所在的位置p就是预......
  • Python离线安装第三方包
    Python离线安装第三方包1.通过pip下载安装包,然后在其他机器上安装python-mpipdownloadtest==1.3.5//安装的库名为test,版本为1.3.5python-mpipinstall--no......
  • 技术分享| 快对讲融合视频监控功能设计
    快对讲是基于移动通信网络,整合集群对讲、视频监控、实时音视频、PSTN、GIS定位、IM数据和调度业务的产品,为客户提供专业对讲、多媒体对讲和可视化融合指挥调度功能。当......