PHP与ajax轮询实时聊天

时间:2010-06-04 11:23:23

标签: php ajax comet chat reverse-ajax

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

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

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

2 个答案:

答案 0 :(得分:2)

  

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

不 - 这不是真正相关 - 最大的问题是HTTP不支持推送通知 - 因此您在Web服务器上使用的语言几乎无关紧要。

  

服务器彗星?

Comet是一种编程技术 - 不是一种语言 - 专门用于解决HTTP中缺少推送的问题。传统上,浏览器发送请求,网络服务器创建响应然后将其发送回客户端。使用Comet,网络服务器会等到:

1)在响应中包含一些更新

2)计时器到期

在发送回复之前。这样做的结果是,如果与Web服务器建立非活动连接,则会导致数量很大 - 这可能会导致性能问题。

另一种方法是使用HTTP来移植客户端程序以在浏览器中运行,该浏览器使用不同的协议连接到聊天服务器。它可以用ActiveX,Java或flash做到这一点 - 所有这些都有很大的缺点 - 尤其是可移植性。

有几种使用PHP和javascript的预先编写的解决方案 - 提示 - 如果文档没有提及Naggle,那么他们可能没有考虑可伸缩性/性能。

下进行。

答案 1 :(得分:0)

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

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