当前位置: 首页 > news >正文

asp.net core系统记录当前在线人数

实时记录当前在线人数,登录后保持120秒在线状态,在线状态保存在缓存中,采用滑动过期,在120秒内请求了系统,自动续活120秒;超过时间则移除用户在线状态;

  • 需要在登录过滤器标记用户在线状态
  • 需要排除循环请求的url,比如定时请求的待办数量
  • 登录成功后标记用户在线

web记录当前在线人数状态

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using System.Text;
using System.Threading.Tasks;namespace WuZiFenGongSiInfomation.Models
{/// <summary>/// 当前在线人数/// </summary>/// 2024-12-26 9:57:09, wanghaolipublic class OnlineUserAmount{static System.Collections.Concurrent.ConcurrentDictionary<string, bool> dict = new System.Collections.Concurrent.ConcurrentDictionary<string, bool>();/// <summary>/// 添加在线人/// </summary>/// <param name="userId">用户主键id</param>/// 2024-12-26 9:57:09, wanghaolipublic static void AddUserOnline(string userId){dict.TryAdd(userId, true);System.Runtime.Caching.MemoryCache.Default.AddOrGetExisting("AddUserOnline." + userId, 1, new CacheItemPolicy(){SlidingExpiration = TimeSpan.FromSeconds(120),RemovedCallback = (args) =>{string userId2 = args.CacheItem.Key;System.Diagnostics.Debug.WriteLine("移除用户在线状态 ,key=" + userId2);LogHelpter.AddLog("移除用户在线状态,key=" + userId2, null, "UserOnline");string userId3 = userId2.Replace("AddUserOnline.","");bool removeResult = dict.TryRemove(userId3, out bool k);if (removeResult){System.Diagnostics.Debug.WriteLine("移除用户在线状态成功,key=" + userId2);LogHelpter.AddLog("移除用户在线状态成功,key=" + userId2, null, "UserOnline");}}});}/// <summary>/// 标记用户在线,续活/// </summary>/// <param name="userId"></param>/// 2024-12-26 10:04:09,   wanghaolipublic static void VisitUseStatCache(string userId){string key = "AddUserOnline." + userId;bool exists = System.Runtime.Caching.MemoryCache.Default.Contains(key);if (exists){               }else{AddUserOnline(userId);}System.Diagnostics.Debug.WriteLine("激活用户在线状态,key=" + userId);LogHelpter.AddLog("激活用户在线状态,key=" + userId,null, "UserOnline");}/// <summary>/// 当前在线人数/// </summary>/// <returns></returns>public static int GetOnlineUserAmount(){return dict.Count;}}
}
http://www.lryc.cn/news/512182.html

相关文章:

  • 秒杀场景的设计思考
  • 快速掌握Haproxy原理架构
  • 基于Centos7.X系统端口占用处理
  • MySQL的索引失效的原因有那些
  • Java重要面试名词整理(十):Kafka
  • 内置ALC的前置放大器D2538A/D3308
  • 04-微服务02
  • Java中的this关键字详解:深入理解与应用
  • 2、C#基于.net framework的应用开发实战编程 - 设计(二、四) - 编程手把手系列文章...
  • 设置首选网络类型以及调用Android框架层的隐藏API
  • “Gold-YOLO:基于聚合与分发机制的高效目标检测新范式”
  • 神经网络-AlexNet
  • Hutool 发送 HTTP 请求的几种常见写法
  • 【Linux】进度条
  • 【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程
  • 强化学习蘑菇书笔记
  • 《机器学习》——线性回归模型
  • Linux(Centos 7.6)网卡信息没有了问题处理
  • WEB攻防-通用漏洞-文件上传-js验证-MIME验证-user.ini-语言特征
  • mybatis-plus代码生成器
  • 12.24-12.28Mysql锁阅读笔记
  • 支持最新 mysql9的workbench8.0.39 中文汉化教程来了
  • golang连接jenkins构建build
  • SCAU高程进阶题(自用)
  • 基于STM32F103控制L298N驱动两相四线步进电机
  • libreoffice在Windows和Linux环境的安装和结合Springboot使用教程
  • 前端开发 -- 自动回复机器人【附完整源码】
  • vue+echarts实现疫情折线图
  • 服务器nfs文件共享
  • 基于Vue+SSM+SpringCloudAlibaba的科目课程管理系统