Php 用户名在会话结束时留下了聊天信息?

Php 用户名在会话结束时留下了聊天信息?,php,jquery,ajax,Php,Jquery,Ajax,基本上我有一个聊天室,使用AJAX和PHP 我让客人通过填写姓名并单击登录来登录。 它填充会话$\u会话['guest'] 现在,当他们关闭浏览器或其他东西时,一旦会话结束,我想在聊天中说 “用户名已离开聊天室” 但我不知道我该怎么做。 有什么办法吗?也许我可以填充一个在过去5分钟内活跃的用户数组,如果没有,从数组中删除,这将使他们退出聊天 有什么想法吗?您可以在后端有一个带有最后一次ping的时间戳的用户数组 然后,客户端可以使用ajax更新后端,每几秒钟发送一个新的时间戳 当其中一个用户正在

基本上我有一个聊天室,使用AJAX和PHP

我让客人通过填写姓名并单击登录来登录。 它填充会话
$\u会话['guest']

现在,当他们关闭浏览器或其他东西时,一旦会话结束,我想在聊天中说

“用户名已离开聊天室”

但我不知道我该怎么做。 有什么办法吗?也许我可以填充一个在过去5分钟内活跃的用户数组,如果没有,从数组中删除,这将使他们退出聊天


有什么想法吗?

您可以在后端有一个带有最后一次ping的时间戳的用户数组

然后,客户端可以使用ajax更新后端,每几秒钟发送一个新的时间戳


当其中一个用户正在更新您的后端时,您的后端可以对所有用户进行检查,检查发送到当前时间的最后一个时间戳(如果超过2分钟或其他时间),您可以告诉他们已离开聊天室并输出消息。

无需直接连接到浏览器,你无法主动判断他们是否有联系。我建议使用类似ping的解决方案,要求浏览器每隔
n
秒ping一次服务器,以保持聊天“活跃”

如果浏览器未与服务器“签入”,服务器将假定他们已断开连接,并向其他参与者报告

这就是说,如果你能深入一点,谷歌“javascript实时聊天”,你就有了。

将jQuery.unload()事件添加到你的聊天客户端。当他们离开聊天室时,它将被触发,您可以使用它发送最后一位数据以显示该消息

以下是文档:

例如:

    $(window).unload(function() {
      //send message to server informing it of client leaving
    });

我不知道这在PHP中是否可行,但你能听到一个套接字关闭吗?你最后一个想法是如何做会起作用,另一种方法是循环所有活动会话,并将其与活动用户数组进行比较,如果用户的会话不再活动,则显示他们离开。使用comet或长轮询。。。这就是你想要的,为什么不在你有结束会话指令后立即使用CSS将消息
echo
并使用它呢?可能是这样的:
if(isset($\u session['guest')){echo'用户名离开了聊天室';unset($\u session['guest');}
使用此方法,您还可以将时间戳保存在数据库中,并将其另存为“上次联机日期”