Gmail 聊天如何在没有长轮询的情况下向用户发送数据

How does gmail chat send data to users without long-polling?

本文关键字:情况下 用户 数据 聊天 Gmail      更新时间:2023-09-26

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

使用 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一切都是应该的。

相关文章: