关于.NET中的Server push技术
2010-04-15 09:38
148 查看
关于.NET中的Server push技术
一般来说方法有2种,一种就是客户端用JS异步定时轮询服务器端,这种是大部分人采用的方法,但是我在想到底可以不可以实现服务器端有改变时才会主动推送到客户端呢?按理来说这种方式对于B/S是不可能实现的,因为B/S是无连接的,这种request/response的方式无法保持状态。搜了一下,看到博客园有位朋友写了篇文章是关于Server Push的,文章点这里看,我自己把它的代码复制过来看了下效果,完整代码如下:前台:
以下为引用的内容: 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ServerPushDemo.aspx.cs" Inherits="WebDemo.ServerPush.ServerPushDemo" %> 2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 5 <html xmlns="http://www.w3.org/1999/xhtml" > 6 <head runat="server"> 7 <title>无标题页</title> 8 <script type="text/javascript"> 9 function SetValue(time) 10 { 11 document.getElementById("TbTime").value=time; 12 } 13 </script> 14 </head> 15 <body> 16 <form id="form1" runat="server"> 17 <div> 18 <input type="text" id="TbTime"/> 19 </div> 20 </form> 21 </body> 22 </html> 23 |
以下为引用的内容: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Threading; namespace WebDemo.ServerPush { public partial class ServerPushDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected override void Render(HtmlTextWriter writer) { base.Render(writer); Response.Buffer = true; bool isOutput = false; Response.Write(""); Response.Flush(); int lastsecond = 0; while (Response.IsClientConnected) { Thread.Sleep(300); if (DateTime.Now.Second != lastsecond && !isOutput) { lastsecond = DateTime.Now.Second; Response.Write("<script>SetValue('" + DateTime.Now.ToString() + "') </script> "); Response.Flush(); isOutput = true; } else { isOutput = false; } } } } } |
真正意义上的Server Push好像我找了一些文章在Cgi里可以实现,点这里看。但在.net里的实现我就不得而知了,知道的高人请指点下,呵呵。
我还搜到一个关于.net推技术的就是Comet框架,可以实现长连接的,具体文章请点这里。改天我会把相关Demo发出来.
相关文章推荐
- 一起谈.NET技术,Server-push技术(comet)----------asp.net中的异步处理+client与服务器端的长连接
- 关于在.net环境下通过使用LDAP来访问AD,LDAPServer的一些问题?
- 服务器推送技术(Server Push)详解
- 一起谈.NET技术,ASP.NET MVC验证框架中关于属性标记的通用扩展方法
- 一起谈.NET技术,关于Expression Tree和IL Emit的所谓的"性能差别"
- 一起谈.NET技术,关于Windows Phone数据库和Silverlight本地文件操作
- 一起谈.NET技术,关于静态页和SEO的看法
- PHP ServerPush (推送) 技术的探讨
- DWR Server Push(服务器推技术) 实现即时聊天
- PHP ServerPush (推送) 技术
- 关于代码规范“.NET技术”
- ServerPush 服务器推技术
- Asp.net的服务器推技术 (Server Push)
- 关于push技术(long polling)和长连接keepalive的一些疑问
- 关于Server-push(笔记)
- 关于PHP、JAVA、.NET这三种技术的区别
- 一起谈.NET技术,使用 IIS Express 取代 ASP.NET Development Server
- 一起谈.NET技术,关于c#静态方法和实例方法的辨析和应用
- 一起谈.NET技术,关于技术争论(尤其是ASP.NETWebForms 和 ASP.NETMVC 之争)
- Asp.net 的 服务器推技术 (Server Push)