我一直在摆弄聊天程序已经有一段时间了。
使用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的this article并观看了informative video,发言人说这可以通过PHP / JS完成,并且对IDEA有很好的理解,我只想要CODE ..
答案 0 :(得分:0)
我找到了一个长轮询的PHP和Apache可行的解决方案。这是一种魅力。
http://www.zeitoun.net/articles/comet_and_php/start
我所要做的就是在backend.php中set_time_limit(0);
,一切都应该如此。