jQuery comet
下面程序是例用从数据端推送信息,原理是每隔10秒读取一下data.txt文件,看有木有新的数据输入,如果有,则alert文件内容。
hmtl代码是
<!DOCTYPE html>
<html>
<head>
<title>Jquery Comet</title>
<script src="jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script> var timestamp=null; function waitForMsg(){
$.ajax({
type:"get",
url:"getData.php?timestamp="+timestamp,
async:true,
cache:false, success:function(data){
var json=JSON.parse(data); //将data由string变成JSON
if(json['msg']!=""){
alert(json['msg']); //显示消息
}
timestamp=json['timestamp']; //将时间设置成data返回的时间
setTimeout('waitForMsg()',1000); //一秒后重新执行
console.log(data);
},
error:function(XHLHttpRequest,textStatus,errorThrown){
alert("error:"+textStatus+"("+errorThrown+")");
setTimeout("waitForMsg()",1500);
}
});
} $(document).ready(function(){
waitForMsg();
});
</script>
</head>
<body> </body>
</html>
php的代码是
<?php
$filename=dirname(__FILE__).'/data.txt'; //打开文件,dirname返回父文件的地址 $lastmodify=isset($_GET['timestamp'])?$_GET['timestamp']:0; //文件上次一修改的时间
$currentmodify=filemtime($filename); //上一次数据块写入文件的时间 while($currentmodify <= $lastmodify){ //上一次数据块写入的时间小于等于文件上一次修改的时间
usleep(10000); //usleep以毫秒指定程序的延迟,这里是延迟十秒之后
clearstatcache();
$currentmodify=filemtime($filename);//更新数据块的写入时间
}; $response=array();
$response['msg'] = file_get_contents($filename); //获取文件的内容
$response['timestamp'] = $currentmodify; //将数据块写入的时间返回
echo json_encode($response);
?>
之后如果在data.txt里面修改内容将会显示在alert语句中。
jQuery comet的更多相关文章
- Comet 反Ajax: jQuery与PHP实现Ajax长轮询
原文地址(http://justcode.ikeepstudying.com/2016/08/comet-%E5%8F%8Dajax-%E5%9F%BA%E4%BA%8Ejquery%E4%B8%8E ...
- COMET技术具体实现 结合PHP和JQUERY
具体看代码,费话不说 PHP服务端 $mem = new RTMEM(); if(!$mem->conn()) exit('no mem server'); if(!$mem->getst ...
- 基于 Asp.Net的 Comet 技术解析
Comet技术原理 来自维基百科:Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流. 简单的说是一种基于现 ...
- JS、JQuery和ExtJs的跨域处理
1.什么是跨域?跨域,JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a. ...
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...
- jQuery简介
jQuery简介 jQuery是继Prototype之后的又一个javascript库,它由John Resig创建于2006年1月. Javascript库作用比较: 1. Prototype(ht ...
- comet在asp.net中的实现
网上有关“服务器推送”的介绍非常多,其中一种实现方式就是采用comet技术,在浏览器与服务端之间建立一个http协议的“长连接”,所谓“长连接”,就是指浏览器到服务端的http请求不会马上得到服务端的 ...
- 探求网页同步提交、ajax和comet不为人知的秘密(上篇)
标题里的技术都是web开发里最常见的技术,但是我想这些常用的技术有很多细节是很多朋友不太清楚的,理解这些细节是我们深入掌握这些技术的一把钥匙,今天我就讲讲我使用这些技术时体会到的这些细节. 同步提交是 ...
- Comet实现的网页聊天程序
“上一篇”介绍了我在c/s程序中用了那些技术,如今只谈c/s不谈b/s那未免out了,势必要写一写b/s的程序与大家共勉. 回忆做技术这些年,06年每天盯着“天轰穿”的视频不亦乐乎,估计那是一代程序员 ...
随机推荐
- xcode5 asset catalogs 由于图标尺寸错误导致编译问题解决[原创]
如下图,即使图片尺寸不规范,xcode5也可以正常预览(这里我提供的尺寸是57*57, 而需要的是120*120) 但编译运行失败,报的错是: Images.xcassets: error: The ...
- 从零开始开发iPhone,教你如何在真机调试iPhone应用程序
对于真机调试,首先要在苹果网站上注册APP ID,以及购买iPhone Develop Program(iDP) 开发者授权,99美元.然后要创建证书请求CSR,创建步骤如下:设置OCSP和CRL为关 ...
- 【js】前台调试,在浏览器调试环境下找不到js怎么办?
针对这次 整个项目单页面的情况下,所有点击出现的新页面都是追加在母页面的情况下,很多时候不像原本的情况,可以直接在浏览器的调试环境下找到想要调试的js代码 这种情况下,怎么能找到子页面的js代码,调试 ...
- Linux中的热键[Tab] [Ctrl]-c [Ctrl]-d
Tab键:命令或者文件补全.可以避免很多的输入错误 1. 按一次,文件或命令补全 2. 按两次,会列举出以按键前的字母为首的所有命令或者文件 Ctrl+C:中断目前程序 Ctrl+D:键盘输入结束.可 ...
- PS常用平面设计制作尺寸
PHOTPSHOP照片处理 数码照片尺寸 平面设计常用制作尺寸 名片 横版:90*55mm<方角> 85*54mm<圆角> 竖版:50*90mm<方角> ...
- HDU 4403 A very hard Aoshu problem (DFS暴力)
题意:给你一个数字字符串.问在字符串中间加'='.'+'使得'='左右两边相等. 1212 : 1+2=1+2, 12=12. 12345666 : 12+3+45+6=66. 1+2+3+4 ...
- odoo 有哪些文档资源
// openbook [覆盖 openerp 7 及之前版本] https://doc.odoo.com/ // 最新的 odoo documentation user[覆盖 odoo 9] ...
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
js replace 全局替换 js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...
- kubernetes之计算机资源管理
系列目录 当你编排一个pod的时候,你也可以可选地指定每个容器需要多少CPU和多少内存(RAM).当容器请求特定的资源时,调度器可以更好地根据资源请求来确定把pod调度到哪个节点上.当容器请求限制特定 ...
- 关于arr.map()问题
最近看map实现原理, Array.prototype._map = function(fn, context) { console.log(fn, context) var temp = []; i ...