Jquery聊天如何跟踪用户会话


Jquery chat how track user session

我们已经在公司内部实现了一个JQuery聊天工具。它工作得很好。我们将用户状态保存在数据库中,当用户登录时将其状态保存在数据库中,当他注销时将状态更改为注销。

问题是,如果任何用户没有点击注销按钮,关闭窗口或关闭他的电脑,他仍然登录在我们的聊天系统。

我们如何跟踪每个用户是否登录,可能通过跟踪用户会话?

我认为实现这一点的最佳方法(但不是最安全或最健壮的)是通过cookie。首先,服务器/jquery脚本将在计算机上放置一个cookie,当用户登录时浏览器会话结束时该cookie将被删除。然后当他们退出时,删除cookie。所以当你想检查用户是否登录时,你要查找cookie

有一个使用CRON的解决方案,例如:

让用户向服务器发送一个小的"ping"消息,告诉服务器,用户仍然登录,活跃并且浏览器打开。对于每个ping,将用户的last_activity时间更新为当前时间。

使用CRON,您可以检查所有用户,如果他们的last_activity时间不大于30秒。如果是,设置他们的状态为注销。

UPDATE users
   SET logged_in = false
 WHERE logged_in = true
   AND UNIX_TIMESTAMP() - last_activity > 30