最近公司有个项目,里面要求要用到Comet技术,所以就到网上找了一下相关的资料和文章,发现有些人说用Ajax的长轮询比较好,后来就百度了一下,发现comet貌似就是通过ajax演变而来的,也就是comet是ajax里面的一种,只不过有多种实现方式,下面我来贴一个经过自己修改后的代码,最后也会贴一个我在博客园上看到的一篇文章的地址,我的代码是通过他的文章所受到的启发修改的,感谢他.
前台:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function fUpdateData(fData) {
$.post("comet_broadcast.asyn", { content: fData },
function (data, status) {
var result = $("#divResult");
result.html(result.html() + "<br/>" + data);
// $("#divResult").html(data);
//服务器返回消息,再次请求后台数据
fGetData();
}, "html"
);
}
//获取服务器最新信息
function fGetData() {
$.ajax({
type: ‘GET‘,
url: ‘ProvideData.ashx‘,
success: function (data) {
fUpdateData(data);
}
});
}
$(document).ready(function () {
//初始化
fGetData();
});
</script>
<style type="text/css">
* { font-size: 12px; }
#divResult { border: 1px solid #000; width: 250px; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
后台推送最新消息:
<div id="divResult">
</div>
</div>
</form>
</body>
</html>
ProvideData.ashx
代码:
/// <summary>
/// ProvideData 的摘要说明
/// </summary>
public class ProvideData : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World:"+DateTime.Now.ToString("HH:mm:ss"));//需要输出特定的信息的,可以在这里处理,例如读取数据库的最新参数啊,获取memcached的值之类的都行.
}
public bool IsReusable
{
get
{
return false;
}
}
}
Web.config
<httpHandlers>
<add path="comet_broadcast.asyn" type="AsnyHandler" verb="POST,GET"/>
</httpHandlers>
<compilation debug="true" targetFramework="4.0" />
还有两个类,类的代码我上传附件好了,如果看不到附件的童鞋请私信或者回复我,我会及时更新.
下面贴一下我在博客园看到的的文章的网址,在此再次的感谢他:
http://www.cnblogs.com/hanxianlong/archive/2010/04/27/1722018.html
附件列表
Comet ASP.NET AJAX 示例,布布扣,bubuko.com