我一直在摆弄聊天程序一段时间了。
使用 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和这篇文章的wiki,并观看了一个内容丰富的视频,演讲者说这可以用PHP/JS完成,并且对IDEA有很好的理解,我只想要CODE。
我找到了一个长轮询的PHP和Apache可行的解决方案。这是一种魅力。
http://www.zeitoun.net/articles/comet_and_php/start
我所要做的就是在后端set_time_limit(0);
.php一切都是应该的。