基本上我有一个聊天,使用AJAX,PHP。
我让客人通过填写他们的姓名并单击登录来登录。它填满了会话$_SESSION['guest']
。
现在,当他们关闭浏览器或其他东西时,一旦会话结束,我希望它在聊天中说
“用户名已离开聊天”。
但我不确定我将如何做到这一点。有什么办法吗?也许我可以填充过去 5 分钟内活跃的用户数组,如果没有,从数组中删除,它会将他们踢出聊天。
有任何想法吗?
您可以在后端有一组用户,其中包含最后一次 ping 的时间戳。
然后,客户端可以通过每隔这么多秒发送一个新的时间戳来使用 ajax 更新后端。
当您的后端由一个用户更新时,您的后端可以检查所有用户检查发送到当前时间的最后一个时间戳,如果超过 2 分钟或者您可以告诉他们已经离开聊天并输出消息.
将 jQuery .unload() 事件添加到您的聊天客户端。当他们离开聊天时,它将被触发,您可以使用它发送最后一点数据以显示该消息。
这是文档:链接。
例子:
$(window).unload(function() {
//send message to server informing it of client leaving
});
如果没有与浏览器的直接连接,您将无法主动判断它们是否已连接。我建议使用类似 ping 的解决方案,要求浏览器每秒 ping 服务器n
以保持聊天“活跃”。
如果浏览器未与服务器“签入”,则服务器假定他们已断开连接并向其他参与者报告。
也就是说,如果您能够更深入地了解 Google“javascript 实时聊天”,那么您将拥有多条成功之路。