首页 > 代码库 > php+ajax 长轮询
php+ajax 长轮询
最近在做项目时要做一个即时提醒功能,第一次做没思路。就百度了下。发现好多都说的模糊不清。我整理了下发出来大家指点下
jquery 代码:
这里使用使用ajax请求test页面获取success的值,请求超时时间为20秒。在20秒内若没数据返回则一直保持连接
$(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(‘<br>[有数据]‘+data.text); e.data.btn.click(); } // 未从服务器中获的数据 if(data.success == ‘0‘){ $("#msg").append(‘<br>[无数据]‘); e.data.btn.click(); } }, // ajax超时,继续查询 error:function(XMLHttpRequest,textStatus,errorThrown){ if(textStatus == "timeout"){ $("#msg").append(‘超时‘); e.data.btn.click(); } } }); }); });
php代码:
if(empty($_POST[‘time‘])) exit(); set_time_limit(0);// 无限请求超时时间 usleep($_POST[‘time‘]);// 等待时间 while(true){ $i++; $rand = rand(1,999); if($rand < 150){ $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(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。