我之前看到过这个问题,并在http://www.zeitoun.net/articles/comet_and_php/start中找到了这个例子,这个例子非常清楚。但是,它使用javascript。
我的问题是,是否有任何插件,函数或其他东西可以帮助我轻松地使用jQuery实现PHP彗星?因为给定的示例需要大量的JavaScript代码。
顺便说一句,我想在Apache上使用它。有可能吗?
答案 0 :(得分:3)
Comet是长轮询,客户端发送请求并等待来自服务器的响应。服务器会在获取更新结果后对请求进行排队。它将响应发送给客户端。
所以基本上你需要做的就是向服务器发送.ajax
请求并使用onSuccess
回调来处理返回数据。除非服务器获取更新的数据,否则不会调用onSuccess
回调。
客户端没什么好看的。实际游戏在服务器端排队请求,然后做出相应的响应。
看一下这个答案的详细代码示例> How do I implement basic "Long Polling"?
答案 1 :(得分:3)
如果你只是做长轮询,那么jQuery会正常工作。但是,jQuery没有公开readyState === 3事件,所以没有内置的方法来获取数据,因为它是流式传输,如果这是你想去的方向。
<强> [编辑] 强> 这是错误#1172
看起来他们使用Prefilter
在1.5中添加了功能所以是的,你现在可以用jQuery做所有的彗星:)
答案 2 :(得分:3)
之前我已经制作了彗星的jQuery版本,这就是我所做的:
var comet = {
connection : false,
iframediv : false,
initialize: function(){
// For other browser (Firefox...)
comet.connection = $('<iframe>');
comet.connection.attr('id', 'comet_iframe');
comet.connection.css( {
left : "-100px",
top : "-100px",
height : "1px",
width : "1px",
visibility : "hidden",
display : 'none'
})
//comet.iframediv = $('<iframe>');
comet.connection.attr('src', 'backend.php');
//comet.connection.append(comet.iframediv);
$('body').append(comet.connection);
},
// this function will be called from backend.php
printServerTime: function (time) {
console.log('time',time);
$('#content').html(time);
},
onUnload: function() {
if (comet.connection) {
comet.connection = false; // release the iframe to prevent problems with IE when reloading the page
}
}
}
$(window).load(comet.initialize)
.unload(comet.onUnload);
我已经将该代码从该页面上删除并使其成为jquery ^ _ ^
答案 3 :(得分:1)
有一个我见过的插件,试试这个? http://code.google.com/p/jquerycomet/