1-1使用PHP / MySQL聊天系统

时间:2012-01-10 16:38:05

标签: php mysql ajax

项目:需要1-1私密聊天的应用程序。
当前系统:应用程序中的当前登录系统使用cookie系统让用户保持登录状态。

我理解如何实现聊天系统(我刚刚阅读了Comet,可能会在以后实现它,但是现在,我计划使用基本的AJAX使用计时器);聊天过程中聊天将存储在text / xml文件中,一旦完成,它将被存档到数据库中。聊天开始时,文件名将存储在数据库中,一旦被检索,将被存储为cookie(数据库将保持不变,除了聊天开始和结束时)。

问题:除非用户在线,否则用户无法与其他用户开始对话。如何设计系统,以便只有两个用户都在线时才能启动聊天?
我真的不需要特定的代码,只需要使其工作的逻辑。

3 个答案:

答案 0 :(得分:3)

假设您正在记录用户活动:

如果接收者在过去30秒内显示活动,则仅允许用户接收聊天。如果没有,请显示用户未联机的错误消息和/或忽略已发送的消息。

答案 1 :(得分:3)

使用无状态系统,您可以决定谁在线和不在线的唯一方法是使用超时。你提到过使用AJAX和一个计时器,所以如果最后一个用户活动比上一次AJAX更新(加上刷新时间)更长,那么它们就不在线了。您需要确保聊天启动页面启动活动更新。

答案 2 :(得分:1)

当用户登录您的站点并且每隔5秒向服务器发送一次ajax ping时,服务器将更新ping的时间。 因此,您可以列出此时正在查看的在线人员,如果ping时间大于5秒,则表示您的用户已注销或关闭其浏览器。

此外,您可以使用浏览器焦点事件以相同的机制执行离开状态。