关于Server-push(笔记)

1.Server Push:
  a.将浏览器主动查询信息改为服务器主动发送信息;
  b.保持HTTP连接,直到Server结束发送数据并发送一个结束信号,或者客户端中断连接;
  c."multipart/mixed"格式的MIME,更够使个一包含许多数据项;
  d.效率更高
2.Client Pull:
  a.服务器发送一批数据,在HTTP响应或文档头标记中插入指令,让浏览器“在5秒内再次装入这些数据”或“10秒内前往某URL装入数据”。当指定的时间达到时,客户端就按照服务器的指示去做,或者刷新当前数据,或者调入新的数据。
  b.不保持HTTP连接,客户端被告知合时建立新连接,以及建立连接是获取什么数据。
  c.HTTP响应头标,能告知客户端在指定的延时时间后执行何种动作;

  d.效率更低,要重建连接;


Comet:Ajax的新应用,服务器端主动推送数据功能
1.客户端发送一个请求,服务器接收它,并使用一个无限循环,将客户端需要的数据push到response中,并进行刷新,但是该response并不关闭,继续接收新的数据并刷新,直到客户端断开连接,该循环才结束退出;
2.Comet可以通过多种方式实现,比如iFrames,Flash,ActiveX,Applet等,可以基于 AJAX 的长轮询方式,也可以基于iframe 及 htmlfile 的流方式,也可以使用客户端插件来实现;
3.目前大概有三种实现方式:
   a.基于长轮询(long polling);
   b.基于iframe;                http://www.iteye.com/topic/841554
   c.基于流(stream)

1.ajax与server-push的共同点:

     使用javascript实现数据无刷新展示
2.ajax与server-push的不同点:
  a.ajax:无论服务器端数据有无变化,都会定期向服务器端取数据
  b.server-push:在服务器端有新数据产生的时候才对客户端进行数据反馈,但会占用连接数。
3.服务器端如何发现有新数据:

     在服务器端使用多线程来监控数据的更改
4.如何推送:.

     net中有个异步回调,使用它便可以实现服务器端往客户端数据的推送

       1>继承IHttpAsyncHandler接口   //定义 HTTP 异步处理程序对象必须实现的协定。

01//启动对 HTTP 处理程序的异步调用。
02    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) {}
03    //进程结束时提供异步处理 End 方法。
04    public void EndProcessRequest(IAsyncResult result){}
05    //获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。 (继承自 IHttpHandler。)
06    public bool IsReusable{get { return false; ; }}
07    //通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。 (继承自 IHttpHandler。)
08    public void ProcessRequest(HttpContext context){throw new NotImplementedException();}
09    //重点在这里,这里负责向客户端写数据  
10    try
11    {
12      context.Response.Write(this.value);
13          if (m_Callback != null)
14          {
15            m_Callback(this);//此处执行完毕,客户端ajax的请求便可获取到服务器端推送的数据了
16           }
17     }
18     catch { }
19     finally
20     {
21       m_IsCompleted = true;
22     }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值