检查用户当前是否在线(直播)

5
我最近完成了我的应用程序,但遇到一个巨大的问题。我需要每次只允许1个用户访问它。有一个首页对每个用户都是可访问的,并且包含“开始”按钮。当用户点击开始后,应用程序会锁定,其他人需要等待直到该用户完成。当用户关闭选项卡/浏览器时,应用程序必须自动解锁。每个用户可以使用我的应用程序5分钟。
我已经部分解决了我的问题,但它仍然不能正常工作 - 在每个网站上,我设置了JQuery脚本,以便每5秒钟触发服务器上的“extend.php”文件(使用$.get()函数)。 php文件修改time.txt文件(将其更改为time()+5),并且主页上的脚本检查(time()>time.txt内容)。因此,当用户关闭选项卡/浏览器时,应用程序可以访问。显然,我的应用程序也基于会话(当用户关闭浏览器时,他失去了访问权限)。
在某些计算机上,它根本无法正常工作(似乎jquery不会触发extend.php文件,这使得我的应用程序始终可以访问)。
所以我的问题是:您是否看到其他解决我的问题的方法?

1
它在哪个操作系统/浏览器上无法正常工作?从那里开始,看看那些遇到问题的人是否有某些共性。你可能在追踪一个实际上是浏览器问题而不是代码问题的问题。 - Brian
你的原则听起来是正确的。首先要做的是在无法运行的计算机上查看它是否会抛出任何可见的浏览器错误。 - graphicdivine
4个回答

2
尝试使用jQuery unload函数,这样当用户单击关闭按钮时,您的网络浏览器会在用户退出前执行最后一行脚本。例如:
$(window).unload(function(){

   "your php function to unlock the app here"

});

希望这有所帮助。

1

你的方法是没问题的,应该可以工作。是的,Node.js,或者任何其他的服务器端JavaScript都可以用来做同样的事情,但是最简单的解决方案还是通过触发脚本。你真的应该把时间集中在进一步调查它无法运行在哪些机器上。


1
如果限制为5分钟,则将其设置为在5分钟后到期。您可以使用 jQuery 中的计数器来显示剩余时间。当它到期时,通知用户时间已经结束。一旦时间到期或用户完成应用程序更新,请将 time.txt 更新为 time() 或您通常在应用程序可访问时处理它的方式。不需要轮询和 1 次更新。

0

当用户在线时,您可以在mysql表上放置LOCK,并在他们离线时解锁它。

唯一的问题是如果您的代码忘记解锁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接