代码之家  ›  专栏  ›  技术社区  ›  xRobot

使用ajax轮询的php实时聊天

  •  3
  • xRobot  · 技术社区  · 15 年前

    我需要创建一个类似于Facebook聊天的聊天。

    我正在考虑使用ajax轮询(每2-3秒发送一次请求)。

    这是个好办法吗?或者我需要使用其他服务器端语言,比如erlang和server comet?

    2 回复  |  直到 15 年前
        1
  •  2
  •   symcbean    15 年前

    或者我需要使用其他服务器端语言

    不-这不是真正相关的-最大的问题是http不支持推送通知-所以你在web服务器上使用的语言是非常不相关的。

    服务器Comet?

    comet是一种编程技术,而不是一种语言,专门用来解决在http中没有push的问题。通常,浏览器发送一个请求,web服务器创建一个响应,然后将其发送回客户端。使用comet时,web服务器将一直等到:

    1)响应中包含一些更新

    2)计时器过期

    在发送响应之前。其结果是,如果与web服务器的连接处于非活动状态,则会导致大量连接,这可能会导致性能问题。

    另一种方法是使用http来挖掘要在浏览器中运行的客户端程序,该浏览器使用不同的协议连接到聊天服务器。ActiveX、Java或Flash可以做到这一点——所有这些都有主要的缺点——尤其是可移植性。

    有几个使用php和javascript-hint的预写解决方案——如果文档中没有提到naggle,那么他们可能没有考虑可伸缩性/性能。

    C.

        2
  •  0
  •   Alfred    15 年前

    这取决于你有多少用户。当你没有很多用户的时候(这就是他们过去的做法),它就会起作用。但在我看来,聊天不是实时的,因为你可能会有超过x秒的延迟(轮询间隔)。

    对于大量并发用户,轮询模型无法扩展。那么您应该真正研究非阻塞长轮询(至少)。我认为如果可能的话,您应该研究一下非阻塞长轮询技术,因为大型站点就是这样做实时应用程序的。但是服务器应该允许您安装其他编程语言,因为php不适合这种技术。