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

采用轮询的方式实现在线人数

轮询主要通过定时器来实现

1.获取设备id

这里需要像后端传入正在观看视频的设备Id号,区分不同的用户设备,确保每个设备在进行视频播放时能被唯一识别。通过设备ID,你可以追踪每个设备的观看状态(例如,记录每个设备的播放情况,获取每个设备是否正在观看视频等)。

使用@fingerprintjs/fingerprintjs": "^4.4.3"和cookies:获取浏览器的唯一标识,具体代码如下:

import FingerprintJS from "@fingerprintjs/fingerprintjs";
// 获取设备Id
const getDeviceId = async () => {let deviceId = VueCookies.get("deviceId");if (!deviceId) {// 通过@fingerprintjs/fingerprintjs插件获取浏览器设备const fpPromise = await FingerprintJS.load();const result = await fpPromise.get();deviceId = result.visitorId;// 过期时间,单位为天(-1 表示会话级 Cookie,浏览器关闭就删除)即永久保存VueCookies.set("deviceId", deviceId, -1);}loginStore.saveDeviceId(deviceId);
};

2.确定要轮询的事件

const onlineCount = ref(1);
const reportVideoPlayOnline = async () => {if (!fileId.value) {return;}let result = await proxy.Request({url: proxy.Api.reportVideoPlayOnline,params: {fileId: fileId.value,deviceId: loginStore.deviceId,},//  这是一个自定义配置项,// 用于控制 是否在请求出错时弹出错误提示(或进行错误处理)。showError: false,});if (!result) {return;}onlineCount.value = result.data;
};

3.使用定时器进行轮询

let timer = ref(null);
const startTimer = () => {timer.value = setInterval(() => {reportVideoPlayOnline();}, 5000);
};

4.在组件销毁之前,清空定时器

onBeforeUnmount(() => {cleanTimer()
});
const cleanTimer=()=>{if(timer.value!==null){clearInterval(timer.value)timer.value=null}
}

http://www.xdnf.cn/news/897301.html

相关文章:

  • SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
  • Kafka 入门指南与一键部署
  • SpringCloud学习笔记-3
  • Linux命令基础(2)
  • 软件功能测试目的是啥?如何通过测试用例确保产品达标?
  • <2>-MySQL库的操作
  • Python 字典(dict)的高级用法与技巧
  • 跨平台游戏引擎 Axmol-2.6.1 发布
  • [论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力
  • 使用vsftpd搭建FTP服务器(TLS/SSL显式加密)
  • 大模型与 NLP、Transformer 架构
  • vue3子组件获取并修改父组件的值
  • TTT讲师认证题目学习记录
  • C++算法训练营 Day10 栈与队列(1)
  • Java学习——正则表达式
  • PHP语言核心技术全景解析
  • 双碳时代,能源调度的难题正从“发电侧”转向“企业侧”
  • MySQL体系架构解析(二):MySQL目录与启动配置全解析
  • React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
  • Linux容器篇、第二章_01Ubuntu22 环境下 KubeSphere 容器平台高可用搭建全流程
  • 悲观锁和乐观锁
  • 数据库SQLite基础
  • 《完全背包》题集
  • 天机学堂(学习计划和进度)
  • TDengine 开发指南——无模式写入
  • vue-20(Vuex 状态管理的最佳实践)
  • 如何配置nginx解决前端跨域请求问题
  • Nuxt.js 中的路由配置详解
  • (转)什么是DockerCompose?它有什么作用?
  • Ubuntu 基于sdl 音频学习的基础代码