在以往的和服务器端通信技术中,我们多数使用的是AJAX轮询式访问,也就是在Javascript中控制时间间隔,然后每隔一段时间就访问一次服务器,然后获得数据或通知。但是这种轮询方式的访问有90%是在做无用功。
要想长时间保持服务器和浏览器之间的连接怎么办?长连接技术,这可不是什么新技术,用IFrame作为隐藏帧指向长请求页面的方法早已被很多人运用在互联网上,但是IFrame作为隐藏帧有一个弊端,那就是浏览器的进度条始终处在读取状态。为了使用户获得更好体验,“Google的天才们”使用了一个叫“htmlfile”的对象解决了这一问题,并把它运用了了GMail和GTalk两个产品上。
如今我们公司要做的新项目上要求有实时报警功能,本来我想用AJAX轮询做,但是觉得挺没追求的,前段时间听说有了Server Push,但是没仔细研究,这次倒是个机会,一天时间,从网上搜集资料。资料不是很多,而且现在有很多开发人员还认为长连接是天方夜谭,居然还有把HTTP协议搬出来要证明自己观点的……
废话不多说了,来介绍一下长连接技术,通常的长链接就是做一个网页,里面写好一个IFrame标签,高宽设置为0,SRC属性指向一个网页,比如是ASPX,然后在这个文件中不做别的,只是在调用Context.Response.Write方法,输出什么?比如客户端有一个更改时间的方法Change(time),那输出就是("<script>window.parent.Change("+DateTime.Now.ToString()+")</script>"),也就是不断的输出客户端的函数调用,并且做成死循环,这样浏览器和服务器端就形成了一条源源不断的数据传输链接。
那htmlfile是什么呢?这是一个类似Javascript中Window对象的一个ActiveXObject,它内部也是DOM结构,将作为隐藏帧的IFrame写入这个对象中,就可以解决进度条的问题。说的可能比较晦涩,来看实例代码吧:
Default.aspx.cs
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void Render(HtmlTextWriter output)
{
string str;
while (true)
{//死循环保持长链接
str = "<script >window.parent.Change('" + DateTime.Now.ToLongTimeString() + "')</script>";
this.Context.Response.Write(str);
this.Context.Response.Flush();//输脚本调用出
System.Threading.Thread.Sleep(1000);
}
}
}
WebForm1.aspx
<!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 runat="server">
<title>Asp.net Server Push</title>
<script type="text/javascript">
function Change(str){
window.document.getElementById("div1").innerText=str;
}
function onload(){
var ifrpush = new ActiveXObject("htmlfile"); // 创建对象
ifrpush.open(); //打开
var ifrDiv = ifrpush.createElement("div"); //添加一个DIV
ifrpush.appendChild(ifrDiv); //添加到 htmlfile
ifrpush.parentWindow.Change=Change; //注册 javascript 方法 搞不明白为什么还要注册
ifrDiv.innerHTML = "<iframe src='Default.aspx'></iframe>"; //在div里添加 iframe
ifrpush.close(); //关闭
}
onload();
</script>
</head>
<body>
<div style=" float:left">现在时间是:</div>
<div id="div1"></div>
</body>
</html>
分享到:
相关推荐
ASP.NET (C#) ServerPush 是一种技术,用于在服务器端主动向客户端推送数据,而无需客户端持续发起请求。在传统的HTTP协议中,浏览器与服务器之间的通信基于请求-响应模型,即客户端发起请求,服务器返回响应。然而...
它支持多种后端技术(如ASP.NET Core或ASP.NET)和多种传输方式(包括WebSocket、Long Polling、Server-Sent Events等)。SignalR提供了简单的API,使得在C#中实现服务器推送变得容易,只需几行代码即可实现连接、...
ASP.NET Server Push 长连接技术是一种用于实时通信的技术,它允许服务器主动向客户端推送数据,而无需客户端频繁发起请求。这种技术在实时性要求较高的应用中,如在线聊天、股票更新、游戏同步等场景非常有用。传统...
ASP.NET Server Push是一种技术,它允许服务器主动向客户端发送数据,而无需客户端发起新的请求。在传统的HTTP协议中,客户端需要先发起请求,服务器才能响应数据。然而,Server Push技术打破了这种模式,使得实时性...
ASP.NET Web端消息推送技术是构建现代Web应用的关键部分,特别是在实时交互和移动设备支持方面。这个源码包显然提供了一种解决方案,使得开发者能够通过ASP.NET平台向Android和iOS等手机端推送消息。让我们深入了解...
而Server Push技术则打破了这种模式,它利用持久连接保持客户端和服务器之间的通道开放,当服务器有新数据时,可以直接推送到客户端,提高了数据传输的效率。 ASP.NET 提供了多种实现主动推送的方式,包括WebSocket...
"ServerPush"可能是一个实现了服务器推送功能的ASP.NET项目,"项目说明.txt"可能包含了项目的详细说明和使用指南,而"Fsrm.ServerPushChat"可能是一个示例应用,展示了如何使用服务器推送技术实现聊天功能。...
只有浏览器请求服务器端,服务器端才给浏览器响应数据,不会主动向浏览器推送数据,这是一种安全考虑,也是提高服务器的性能考虑,如果服务器向浏览器主动推送数据,就要用到ServerPush等技术模拟实现。 举个例子: ...
ASP.NET MVC 中 SignalR 的简单应用 ...它支持“服务器推送”功能,可以实现服务器主动推送消息到客户端页面,是一个非常有用的技术在 ASP.NET MVC 中使用 SignalR 可以提高应用程序的实时性和交互性。
- server push 利器http://www.codeproject.com/Articles/584845/SignalR-as-a-Service Pushing ETW events through SignalRComet:基于 HTTP 长连接的“服务器推”技术解析ASP.NET SignalR Basis Step by Step ...
首先,服务器推送在ASP.NET框架下可以利用多种技术实现。一种常见的方式是使用HTTP长轮询(Long Polling)。这种方法通过保持一个HTTP连接打开,直到服务器有新的数据要发送或连接超时。在本示例中,可能已经解决了...
总结来说,虽然ASP.NET本身不能直接读取用户的IE历史记录,但可以通过结合JavaScript和AJAX技术,从客户端获取并在服务器端进行处理。这种方法需要谨慎使用,确保尊重用户的隐私,并符合相关法律法规。
然而,由于ASP.NET 2.0的限制,我们还需要使用JavaScript或jQuery来处理多个FileUpload控件,并将选中的文件信息序列化为JSON,然后通过一个隐藏的表单字段发送到服务器。 在代码实现过程中,我们可以按照以下步骤...
在 VS2005 中,我们可以创建 ASP.NET Web 应用程序,并结合 AJAX 控件工具包(ASPAJAXExtSetup.msi 和 ASPAJAXCTP.msi 文件可能用于安装这些工具)来构建支持长轮询的 ServerPush 功能。 1. **创建 Web 应用**:...
掌握Server Push技术,熟悉Global对象的使用。了解URL重写机制,掌握缓存的管理方法。比较母版页与SSI(Server Side Includes)的不同之处,学习网站部署与IIS配置的相关知识。 #### 第六部分:ASP.net MVC - **EF...
2. "水晶报表push模式教程.exe":Push模式是水晶报表的一种工作模式,它允许服务器主动向客户端推送数据。这个教程可能讲解了如何在ASP.NET环境中配置和使用Push模式,以提高报表的实时性。 3. "jansen系列水晶报表...
ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于创建动态网页或Web应用程序。在ASP中,开发者可以使用多种编程语言,如VBScript或JScript,来编写服务器端的脚本,这些脚本会在服务器上执行并...