如果没有长时间轮询,gmail聊天如何向用户发送数据?

时间:2012-08-13 17:14:59

标签: php javascript ajax long-polling polling

我一直在摆弄聊天程序已经有一段时间了。

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

长期民意调查是不成功的。我发现我可以在我的服务器(Apache)上执行长轮询请求但是如果我有一个长轮询请求正在运行,则该网页的其余部分将呈现为“死”。我无法点击文本框或输入或者是什么。

我现在知道这是因为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和wikithis article并观看了informative video,发言人说这可以通过PHP / JS完成,并且对IDEA有很好的理解,我只想要CODE ..

1 个答案:

答案 0 :(得分:0)

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

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

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