gpt4 book ai didi

javascript - 如何在我的网站中获取用户在线状态(实时)

转载 作者:行者123 更新时间:2023-12-02 19:30:26 29 4
gpt4 key购买 nike

我想显示我的网站上所有用户都在线(实时;就像任何聊天模块一样)。我正在使用下面提到的脚本来执行此操作。

HTML:

<body onbeforeunload="Unload();" onmousedown="checkfunction();">

</body>

Javascript:

var doClose = false;

document.onkeydown = checkKeycode;

function checkKeycode(e){
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e)
keycode = e.which;
if(keycode == 17 ){
doClose = true;
}
}

function checkfunction(){
doClose = true;
}

function Unload(){
if(!doClose){
set_user_log_out(<?php ehco $u_id ?>);
}
}

set_user_log_out函数用于设置用户退出。

在上面提到的java脚本中,我想考虑下面提到的场景。

  1. 用户可能会在浏览器中打开多个选项卡。或者,他可能会打开多个浏览器(仅限同一浏览器)。
  2. 用户可以关闭一个选项卡并访问另一选项卡。
  3. 用户可能会点击一个选项卡,然后直接关闭另一个选项卡。
  4. 用户无需点击注销选项即可关闭浏览器。
  5. 用户可以使用键盘快捷键(例如ctrl + F4)关闭浏览器。

所以,我也在检查键码(使用键盘按下了哪个键)。但是,这段代码存在一些问题。下面提到了它们。

  • 我还没有找到任何解决方案来获取多个按键的键码(例如ctrl + F4)
  • 考虑到两个选项卡,如果我输入其他网址(同一网站的),该页面将继续在 Firefox 中加载。
  • ctrl + r 无法完全发挥作用。
  • 有时,在尝试访问网站的其他页面时,它只是执行函数 set_user_log_out()(仅发生在 Firefox 中)

请建议我为此需要什么。我还浏览了下面提到的网址。

How to Track the Online Status of Users of my WebSite?

但是上面url描述的功能没有考虑我的场景。

最佳答案

您应该在数据库中保留事件 session 列表以及上次事件时间。

在每次向服务器发出请求时,您应该更新发出请求的特定 session 的上次事件时间。此表中的“在线用户”数量为 COUNT,比方说,最后一次事件 < 1 分钟前

在注销功能上,您还应该从此表中删除特定 session

关于javascript - 如何在我的网站中获取用户在线状态(实时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com