所以我正在实施一个聊天室。我将从我使用的架构开始。
room
表,基本上存储了关于聊天室的信息,如参与者的数量,主题等等。users
表,用于存储用户信息。posts
表来存储帖子。这有来自用户和房间表的外键。现在,我在页面上有三个div,一个用于chatarea,另一个用于显示在线人员,然后有一个文本区域用于发布消息。
我目前正在做的是拥有一个javascript函数loadChats()
,现在这个方法调用一个php文件,该文件只提取所有该特定房间中的帖子到现在为止。同样被抛入我的div,即“聊天室”。
此外,类似地,我有loadParticipants()
每隔一秒加载用户。
我正在使用jquery.post用于此目的,在方法的最后,我在函数的末尾执行setTimeout
。现在这是我的问题
当然,我可以做得更好。有什么建议?我想的是一些。
posts
表,那么该特定的聊天室会被通知和更新?即,不是一直ping服务器以询问新请求,只需询问一次,等待是否有新的事情。当该请求完成后,它会再次ping服务器以进行下一次更新。答案 0 :(得分:1)
你应该研究一下websockets(我从未在PHP中使用它们,但这似乎很有希望:http://socketo.me/)。您可以做的是让服务器在进入客户端时将任何新消息推送到客户端,并让每个客户端都推送到服务器等。这样您就不必每隔2次就一直在ping服务器。秒,加载大量数据进行比较。当有新消息时,服务器将其保存到某个数据库,然后将该消息推送到所有打开的套接字。登录/注销也是一样。
编辑:只需仔细查看页面,他们的教程甚至会介绍如何使用基本的聊天室功能进行设置。