任何人都可以给我一个使用PHP的彗星技术的简单例子吗?
我只需要一个使用持久HTTP连接或类似的示例。我不想使用轮询技术,因为我有这样的设置,不仅难以使用和管理它的大量资源。我也使用IIS7而不是Apache。
一个很好的例子真的很有用,所以我可以从这种丑陋的轮询技术中继续前进。
您应该使用轮询,或使用专门为长请求和COMET设计的Web服务器,以及良好的JS后端:
function listen() {
$.get("/mylongrequestfile", {}, function(data) {
$("#mydiv").html(data);
listen(); // then launch again
}));
};
请记住,COMET是“等待数据,如果有数据返回并退出”,那么JS后端将不得不解析数据并重新启动询问服务器的过程。
在此示例中,如果存在服务器端问题或仅断开与用户端的连接,则整个过程将被中断(仅在请求成功时才调用该函数)
看看这个:How to implement COMET with PHP。 这不是使用JQuery。它是使用PHP和Prototype制作的。这很容易理解。我认为你可以在查看之后轻松制作JQuery脚本。
我在这里有一个非常简单的例子,可以让你开始使用彗星。它包括使用NHPM模块编译Nginx,并包含jQuery,PHP和Bash中简单发布者/订阅者角色的代码。
http://blog.jamieisaacs.com/2010/08/27/comet-with-nginx-and-jquery/
可以在这里找到一个工作示例(简单聊天): http://cheetah.jamieisaacs.com/
从未使用过这种技术并研究Wikipedia article的主题,“长轮询”似乎是唯一可行的解决方案。通过在服务器上无限循环和休眠脚本来实现它听起来非常简单。 actual code中有一些与维基百科文章相关的HTTP Streaming page。
你有没有试过这个并偶然发现具体问题?
查看此演示视频以实现长轮询(彗星)..它可能对您有所帮助
你可以看看这个article,这是了解彗星编程概念的一个非常好的开始。
你会发现两个例子。第一个使用iframe技术,而第二个使用持久连接。
对于IIS,有WebSync。但是,由于您使用的是PHP,因此使用WebSync On-Demand可能会更好。任何一个都会为您提供您正在寻找的服务器推送,并且易于使用。查看this question,这基本上就是你所追求的。
这是使用无脚本语言的a simple example of WebSync On-Demand in action。只需在两个窗口中打开,然后查看发布/订阅操作。
要从服务器发布,您可以使用PHP api。