js如何实时检查用户登录?

我正在使用Ajax为我的网站建立一个简单的支持聊天。我想检查我当前正在聊天的用户是否离开了浏览器。

目前,我已经通过在客户端设置间隔函数来建立该功能,该间隔函数创建名称为userId.txt的文件

在管理区域中,我创建了一个间隔函数,用于检查userId.txt是否存在。如果存在,则将其删除。如果自定义间隔功能未重新创建文件-下次管理员功能将发现该文件不存在时,它将使用此userId标记为客户处于非 Activity 状态。

抽象表示:

customer -> interval Ajax function -> php [if no file - create a new file]

admin -> interval Ajax function -> php [if file exists - delete the file] -> return state to Ajax function and do something

我想知道是否有更好的方法可以想到此功能?

最佳答案

我的解决方案是使用jquery ready和beforeunload方法触发ajaxpost请求,该请求将在用户到达和离开时通知。

该解决方案是“轻量级”的,因为每个用户仅记录两次。

support.html

<!DOCTYPE html>

<html>

<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script>

//log user that just arrived - Page loaded

$(document).ready(function() {

$.ajax({

type: 'POST',

url: 'log.php',

async:false,

data: {userlog:"userid arrived"}

});

});

//log user that is about to leave - window/tab will be closed.

$(window).bind('beforeunload', function(){

$.ajax({

type: 'POST',

url: 'log.php',

async:false,

data: {userlog:"userid left"}

});

});

</script>

</head>

<body>

<h2>Your support html code...</h2>

</body>

</html>

log.php

<?php

//code this script in a way that you get notified in real time

//in this case, I just log to a txt file

$userLog = $_POST['userlog'];

file_put_contents("userlog.txt", $userLog."\n", FILE_APPEND );

//userid arrived

//userid left

注意:

1-在ChromeFFOpera上测试。我没有Mac,因此无法在Safari上对其进行测试,但它也应该可以工作。

2-我尝试了unload方法,但它不如beforeunload可靠。

3-在async请求上将false设置为ajax意味着您要调用的语句必须在下一条语句之前完成,这样可以确保在关闭窗口/选项卡之前得到通知。

以上是 js如何实时检查用户登录? 的全部内容, 来源链接: www.h5w3.com/122042.html

回到顶部