基于jquery,php实现AJAX长轮询(LongPoll).doc_第1页
基于jquery,php实现AJAX长轮询(LongPoll).doc_第2页
基于jquery,php实现AJAX长轮询(LongPoll).doc_第3页
基于jquery,php实现AJAX长轮询(LongPoll).doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HTTP是无状态、单向的协议,用户只能够通过客服端向服务器发送请求并由服务器处理发回一个响应。若要实现聊天室、WEBQQ、在线客服、邮箱等这些即时通讯的应用,就要用到“ 服务器推送技术(Comet)”。传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上查询最新的数据。种这种拉取数据的方式需要很短的时间间隔才能保证数据的精确度,但太短的时间间隔客服端会对服务器在短时间内发送出多个请求。反转AJAX,就是所谓的长轮询或者COMET。服务器与客服端需要保持一条长时间的请求,它使得服务器在有数据时可以返回消息给客户端。html:view plaincopy to clipboardprint?1. 2. javascript:这里使用AJAX请求data.php页面获得success的值,请求的时间达到80秒。在这80秒中若没有从服务端返回success则一直保持连接状态,直到有数据返回或success的值为0才关闭连接。在关闭连接后在继续下一次的请求。view plaincopy to clipboardprint?1. $(function()2. 3. 4. $(#btn).bind(click,btn:$(#btn),function(evdata)5. $.ajax(6. type:POST,7. dataType:json,8. url:data.php,9. timeout:80000,/ajax请求超时时间80秒10. data:time:80,/40秒后无论结果服务器都返回数据11. success:function(data,textStatus)12. /从服务器得到数据,显示数据并继续查询13. if(data.success=1)14. $(#msg).append(有数据+data.text);15. evdata.data.btn.click();16. 17. /未从服务器得到数据,继续查询18. if(data.success=0)19. $(#msg).append(无数据);20. evdata.data.btn.click();21. 22. ,23. /Ajax请求超时,继续查询24. error:function(XMLHttpRequest,textStatus,errorThrown)25. if(textStatus=timeout)26. $(#msg).append(超时);27. evdata.data.btn.click();28. 29. 30. 31. );32. );33. 34. );PHP:在这里是无限的循环,循环的结束条件就是获取到了返回结果返回Json数据。并且接受$_POSTtime参数来限制循环的超时时间,避免资源的过度浪费。(浏览器关闭不会发消息给服务器,使用可能一直循环下去)view plaincopy to clipboardprint?1. if(empty($_POSTtime)exit();2. set_time_limit(0);/无限请求超时时间3. $i=0;4. while(true)5. /sleep(1);6. usleep(500000);/0.5秒7. $i+;8. 9. /若得到数据则马上返回数据给客服端,并结束本次请求10. $rand=rand(1,999);11. if($rand1,name=xiaocai,text=$rand);13. echojson_encode($arr);14. exit();15. 16. 17. /服务器($_POSTtime*0.5)秒后告诉客服端无数据18. if($i=$_POSTtime)19. $arr=array(success=0,name=xiaocai,text=$rand);20. echojson_encode($arr);21. exit();22. 23. 24. 运行效果:在图中可以看到无数据的请求时间达到了40S,在40S的请求中若获得数据则请求关闭。传统的AJAX轮询方式:HTTP请求和响应头信息开销总共包括871字节,而且还不包括任何数据,当然,这只是一个例子,你的消息头数据完全可能低于871字节,但我也看到过消息头数据超过2000字节的情况。在这个例子中,股票主题消息数据大约只有20个字符。当你把这样的程序大规模部署给用户时会怎么样?我们使用三个不同的用例观察一下该轮询应用程序关联的HTTP请求和响应头数据需要的网络吞吐量。用例A:1000客户端,每秒轮询一次网络吞吐量(871x1000)=871000字节=6968000比特/秒(6.6Mbps)用例B:10000客户端,每秒轮询一次网络吞吐量(871x1000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论