用户名在会话结束时留下了聊天消息


Username has left the chat message when his session ends?

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

我让客人通过填写他们的名字并点击login来登录。它填充会话$_SESSION['guest']

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

中说

"用户名已离开聊天室".

但是我不确定我该怎么做。有什么办法吗?也许我可以填充过去5分钟内活跃的用户数组,如果没有,从数组中删除,它将把他们踢出聊天。

任何想法?

您可以在后端有一个用户数组,其中包含上次ping的时间戳。

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

当你的后端被其中一个用户更新时,你的后端可以对所有用户检查发送到当前时间的最后时间戳,如果它超过2分钟或者你可以告诉他们已经离开聊天并输出消息。

如果没有直接连接到浏览器,您将无法主动判断它们是否已连接。我建议使用ping-like的解决方案,要求浏览器每n秒ping一次服务器以保持聊天"活跃"。

如果浏览器没有与服务器"签入",服务器假定它们已经断开连接,并向另一个参与者报告。

也就是说,如果你能更深入一点,谷歌一下"javascript实时聊天",你就会有几条成功的道路。

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

这里是文档:Link.

的例子:

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