2011-11-18 72 views
6

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

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

是不是唯一的方法是在JS中setInterval来检查新消息?但我觉得它(Facebook聊天框)喜欢有即时反应。

如何用PHP实现这样伟大的事情?

+2

他们使用类似这样的内容:http://en.wikipedia.org/wiki/Comet_(programming)。 –

+1

由于某种原因,闭合圆括号不成为链接的一部分 –

+1

@SimpleCoder即使他们使用彗星,他们也可能做某种AJAX轮询。 –

回答

7

您所描述的即时聊天通常通过一种称为“长轮询”的方式实现,或者如果我们谈论的是AJAX“Comet”(关于它的Wikipediatalks)。轮询往往会拉扯Apache服务器,但有一些专门的服务器来处理它,如APE。我不确定,但我认为你可以使用NodeJSNGINX来处理相当不错的压力。

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

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

3

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

这里有一些相关的SO问题:

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

0

您可能想要考虑Node.js'实时'为客户端服务,因为使用PHP/AJAX进行长轮询可能会对您的服务器造成负担。 但实施本身是一项艰巨的任务。只是说。 使用PHP/AJAX进行长时间轮询可能会对您的服务器造成压力。

我的理论的典型执行相同的:

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