使用 php 和 jquery 的简单彗星示例

Posted

技术标签:

【中文标题】使用 php 和 jquery 的简单彗星示例【英文标题】:Simple comet example using php and jquery 【发布时间】:2009-08-24 04:57:19 【问题描述】:

谁能给我一个使用 php 的彗星技术的简单好例子吗?

我只需要一个使用持久 HTTP 连接或类似连接的示例。我不想使用轮询技术,因为我有类似的设置,不仅难以使用和管理它的大量资源。另外我使用的是 IIS7 而不是 Apache。

一个很好的例子会很有帮助,这样我就可以摆脱这种丑陋的轮询技术了。

【问题讨论】:

getclicky.com 似乎很成功地使用了轮询方法 【参考方案1】:

您应该使用轮询,或者使用专门为长请求和 COMET 设计的 Web 服务器,并具有良好的 JS 后端:

function listen() 
    $.get("/mylongrequestfile", , function(data) 
        $("#mydiv").html(data);
        listen(); // then launch again
    ));
;

记住COMET是“等待数据,如果有数据返回退出”,所以JS后端将不得不解析数据并重新启动询问服务器的过程。

本例中,如果出现服务器端问题或者只是与用户端断线,整个过程都会中断(只有请求成功才会调用该函数)

【讨论】:

+1 很棒的代码,你会建议在请求之间让它休眠吗? 服务器本身应该产生sleep的效果,所以服务器应该在给出响应之前等待,直到其中之一发生(1-找到新数据,2-请求超时)【参考方案2】:

看看这个:How to implement COMET with PHP. 这不是使用 JQuery。它是使用 PHP 和 Prototype 制作的。这很容易理解。我想你看了这个之后就可以很容易地制作 JQuery 脚本了。

【讨论】:

【参考方案3】:

我在这里有一个非常简单的示例,可以帮助您开始使用 comet。它涵盖了使用 NHPM 模块编译 nginx,并包含 jQuery、PHP 和 Bash 中简单发布者/订阅者角色的代码。

http://blog.jamieisaacs.com/2010/08/27/comet-with-nginx-and-jquery/

可以在此处找到一个工作示例(简单聊天):http://cheetah.jamieisaacs.com/

【讨论】:

【参考方案4】:

从未使用过这种技术并研究过Wikipedia article 的主题,“长轮询”似乎是唯一可行的解​​决方案。通过在服务器上无限循环和休眠脚本来实现听起来很简单。***文章链接到的HTTP Streaming page 中有一些actual code。

您是否尝试过其中任何一种方法并偶然发现了具体问题?

【讨论】:

【参考方案5】:

观看此演示视频,了解如何实现长轮询(彗星)。 或许能帮到大家

http://www.screenr.com/SNH

【讨论】:

【参考方案6】:

你可以看看这个article,这是了解彗星编程概念的一个很好的开始。

你会在上面找到两个例子。第一个使用 iframe 技术,而第二个使用持久连接。

【讨论】:

【参考方案7】:

对于 IIS,有 WebSync。但是,由于您使用的是 PHP,因此使用WebSync On-Demand 可能会更好。任何一个都会为您提供您正在寻找的服务器推送,并且易于使用。也可以查看this question,这基本上就是您所追求的。

这里是 a simple example of WebSync On-Demand in action,使用 no 脚本语言。只需在两个窗口中打开,然后查看发布/订阅操作。

要从服务器发布,您可以使用PHP api。

【讨论】:

以上是关于使用 php 和 jquery 的简单彗星示例的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中使用彗星?

php彗星与栎

简单的 jQuery、PHP 和 JSONP 示例?

彗星与 php 套接字服务器?

Comet,使用 jquery 教程进行长轮询 [关闭]

为java选择彗星框架