php+ajax 长轮询
2020-12-07 04:05
标签:style blog class code java javascript ext color set cti rgb 最近在做项目时要做一个即时提醒功能,第一次做没思路。就百度了下。发现好多都说的模糊不清。我整理了下发出来大家指点下 jquery 代码: 这里使用使用ajax请求test页面获取success的值,请求超时时间为20秒。在20秒内若没数据返回则一直保持连接 php代码: php+ajax 长轮询,搜素材,soscw.com php+ajax 长轮询 标签:style blog class code java javascript ext color set cti rgb 原文地址:http://www.cnblogs.com/MGer-PHP/p/3701573.html$(function(){
$("#btn").bind(‘click‘,{btn:$(‘#btn‘)},function(e){
$.ajax({
type: ‘POST‘,
dataType: ‘json‘,
url: ‘test.php‘,
timeout: ‘20000‘,//请求超时时间
data: {time: ‘2000000‘},// 每次请求等待时间
success: function(data,status){
if(data.success == ‘1‘){
$("#msg").append(‘
[有数据]‘+data.text);
e.data.btn.click();
}
// 未从服务器中获的数据
if(data.success == ‘0‘){
$("#msg").append(‘
[无数据]‘);
e.data.btn.click();
}
},
// ajax超时,继续查询
error:function(XMLHttpRequest,textStatus,errorThrown){
if(textStatus == "timeout"){
$("#msg").append(‘超时‘);
e.data.btn.click();
}
}
});
});
});
if(empty($_POST[‘time‘])) exit();
set_time_limit(0);// 无限请求超时时间
usleep($_POST[‘time‘]);// 等待时间
while(true){
$i++;
$rand = rand(1,999);
if($rand ){
$arr = array(‘success‘=>‘1‘,‘name‘=>‘有值‘,‘text‘=>$rand);
echo json_encode($arr);
exit();
}else{
$arr = array(‘success‘=>‘0‘,‘name‘=>‘无值‘,‘text‘=>$rand);
echo json_encode($arr);
exit();
}
}