1

一段时间以来,我一直在摆弄一个聊天程序。

使用 AJAX 进行轮询已经成功,但是它每秒向服务器发送一个请求,这对我来说似乎太贵了,更不用说每 1000ms 一次很慢。

长轮询不成功。我发现我可以在我的服务器 (Apache) 上执行长轮询请求,但是如果我正在运行长轮询请求,则网页的其余部分将呈现为“死”。我无法单击文本框或键入或whathaveyou。

我现在知道这是因为 Apache 对长轮询请求使用多个线程,因此与其他服务器类型不同,它会消耗大量资源。

我的问题:

1.如何在没有长轮询的情况下创建相同的“即时消息功能”(或者如何在 Apache 上成功地进行长轮询?)。我只需要

When (someone sends a message and thus a file on server changes) {send data to all users;},应该很容易吧?

我注意到 facebook 为客户端(在 Firebug 中)进行长轮询,但 Gmail 聊天显然没有,但具有相同的功能?!

2.gmail聊天是怎么做的?

我已经阅读了关于 Comet的wiki和这篇文章,并观看了一个内容丰富的视频,演讲者说这可以用 PHP/JS 完成,并且对 IDEA 有很好的理解,我只想要代码。

4

1 回答 1

0

我找到了一个长轮询 PHP 和 Apache 可行的解决方案。这是一种魅力。

http://www.zeitoun.net/articles/comet_and_php/start

我所要做的就是set_time_limit(0);在 backend.php 中,一切都应该是这样。

于 2012-08-13T19:59:37.703 回答