【问题标题】:How to implement a real fast web chat with PHP?如何使用 PHP 实现真正的快速网络聊天?
【发布时间】:2011-12-31 21:26:27
【问题描述】:

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

有没有人想知道为什么 Facebook 的聊天速度如此之快?即使在没有 WebSocket 的 IE 中。

难道不是唯一的方法是在 JS 中通过 setInterval 来检查新消息吗?但我觉得它(Facebook 聊天框)就像有即时反应。

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

【问题讨论】:

  • 他们使用这样的东西:en.wikipedia.org/wiki/Comet_(programming).
  • 由于某种原因,右括号没有成为链接的一部分
  • @SimpleCoder 即使他们使用 Comet,他们也可能会进行某种 AJAX 轮询。

标签: php ajax facebook chat web


【解决方案1】:

您所描述的即时聊天通常是通过一种称为“长轮询”的东西来实现的,或者,如果我们谈论的是 AJAX,则称为“彗星”(Wikipediatalks 关于它)。轮询往往会给 Apache 服务器带来压力,但有一些专门的服务器可以处理它,例如 APE。我不确定,但我认为你可以对 NodeJS 做同样的事情,NGINX 可以很好地处理压力。

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      我的典型理论实现:

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

      【讨论】:

        猜你喜欢
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 2017-10-06
        • 1970-01-01
        相关资源
        最近更新 更多