2012-01-10 44 views
1

项目:需要1-1私人聊天的应用程序。
当前的系统:在应用程序的当前登录系统使用为用户在保持登录一个cookie系统
1-1使用PHP/MySQL的聊天系统

我明白如何实现聊天系统(我刚刚看了一下彗星,并且以后可能会实现它,但现在,我打算使用基本的AJAX使用计时器);在聊天过程中聊天将存储在文本/ XML文件中,并且一旦完成,它将被存档到数据库中。当聊天开始时,文件名将被存储在数据库中,并且一旦被检索,将被存储为cookie(除了聊天开始和结束时,数据库将保持不变)。

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

+0

用户只会通过点击链接发起聊天..只显示他的在线人的链接...保存用户在数据库中的状态并通过超时上传您的在线人员列表。 – 2012-01-10 16:44:53

回答

1

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

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

+0

5秒钟可能是一个有点太短我认为...它可能会导致服务器负载,假设将有很多用户。 – 2012-01-10 17:04:02

3

假设你正在登录的用户活动:

只允许用户接收聊天如果接收器已经在超过30秒显示出活性。如果没有,则显示用户不在线和/或忽略发送的消息的错误消息。

3

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