如何用PHP实现真正快速的网络聊天?

时间:2011-11-18 02:06:19

标签: php ajax facebook chat web

如何使用PHP实现真正快速的网络聊天?

有没有人想知道为什么Facebook聊天真的非常快?即使在没有WebSocket的IE中也是如此。

不是唯一的方法是在JS中设置setInterval以检查新消息吗?但我觉得(Facebook聊天框)就像是立即反应。

如何用PHP实现这么棒的东西?

3 个答案:

答案 0 :(得分:7)

你所描述的即时聊天通常是通过一种叫做“长轮询”的东西来实现的,或者,如果我们谈论的是AJAX,那就是“彗星”(Wikipedia talks关于它。轮询往往会使Apache服务器紧张,但有一些专门的服务器可以处理它,如APE。我不确定,但我认为你可以用NodeJS做同样的事情,而NGINX可以很好地处理压力。

Here这里有一篇关于如何使用PHP jQuery和AJAX实现长轮询聊天的文章。

祝你好运,我希望它有所帮助!

答案 1 :(得分:3)

我同意@ joseph-szymborski虽然开始查看通过Flash和/或长轮询回退到WebSockets的WebSocket解决方案是有意义的。

以下是一些相关的SO问题:

如果您想使用PHP或在共享主机上,那么我建议您查看hosted realtime web solution

答案 2 :(得分:0)

您可能希望将Node.js视为实时'实时'因为使用PHP / AJAX进行长轮询可能会对您的服务器造成压力。 但实施本身是一项艰巨的任务。只是说。 使用PHP / AJAX进行长轮询可能会对您的服务器造成压力。

我的典型理论实现:

  1. 创建一个Node.js服务器以查询数据库。
  2. 使用cURL将变量和/或会话数据从php发送到Node js。
  3. 解析Node.js服务器中的url并使用变量进行检查 对于数据库的变化。
  4. 如果发生更改,则发出新数据并发送给客户。