一段时间以来,我一直在摆弄一个聊天程序。
使用 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 有很好的理解,我只想要代码。