AJax技术

服务器推送技术

字号+ 作者:H5之家 来源:H5之家 2015-10-24 08:37 我要评论( )

最近几天,一直在研究服务器推技术,在网上看了很多资料,也下载了很多小例子,总体来说,学到了一些东西,有些心得分享下: 传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作。这种方式并不能满足很多现实应用的需求,譬如: 这些应用都需要服

  最近几天,一直在研究服务器推技术,在网上看了很多资料,也下载了很多小例子,总体来说,学到了一些东西,有些心得分享下:

  

  传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作。这种方式并不能满足很多现实应用的需求,譬如:

  这些应用都需要服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求。“服务器推”技术在现实应用中有一些解决方案,本文将这些解决方案分为两类:一类需要在浏览器端安装插件,基于套接口传送信息,或是使用 RMI、CORBA 进行远程调用;而另一类则无须浏览器安装任何插件、基于 HTTP 长连接。

  将“服务器推”应用在 Web 程序中,首先考虑的是如何在功能有限的浏览器端接收、处理信息:

  

  而基于客户端套接口的“服务器推”技术大体可以分为:

    传统轮询:Web 早期,这一点常使用 meta 刷新实现。这将自动指示浏览器在指定秒数之后重新装载页面,从而支持简陋的轮询( polling )。例如在 HTML 文件中加入 <META HTTP-RQUIV="Refresh" CONTENT=12> ,实际上就是 HTTP 头标告知浏览器每 12 秒更新一次文档。

          优点:不需要服务器端配置

          缺点:用户体验度差

             对服务器的压力很大,带宽流失严重

    ajax轮询:Ajax 隔一段时间(通常使用 JavaScript 的 setTimeout 函数)就去服务器查询是否有改变,从而进行增量式的更新。但是间隔多长时间去查询成了问题,因为性能和即时性造成了严重的反比关系。间隔太短,连续不断的请求会冲垮服务器,间隔太长,务器上的新数据就需要越多的时间才能到达客户机。

          优点:不需要太多的服务器端配置

              降低了带宽的负荷(因为返回的不是完整的页面)

          缺点:对服务器的压力并没有减少

             实时性差,有一定的延迟

          应用:这种技术很常见,很多webmail应用程序就是通过这种技术在电子邮件到达时显示电子邮件的。

    comet:Comet 方式通俗的说就是一种长连接机制 (long lived http) 。同样是由 Browser 端主动发起请求,但是 Server 端以一种似乎非常慢的响应方式给出回答。这样在这个期间内,服务器端可以使用同一个 connection 把要更新的数据主动发送给 Browser 。因此请求可能等待较长的时间,期间没有任何数据返回,但是一旦有了新的数据,它将立即被发送到客户机。Comet 又有很多种实现方式,但是总的来说对 Server 端的负载都会有增加 . 虽然对于单位操作来说,每次只需要建议一次 connection, 但是由于 connection 是保持较长时间的 , 对于 server 端的资源的占用要有所增加。

          优点:实时性好(消息延时小);性能好(能支持大量用户)         

          缺点:长期占用连接,丧失了无状态高并发的特点。

          应用:股票系统。实时通讯。

    flash xml socket:这种方案实现的基础是:一、 Flash 提供了 XMLSocket 类。二、 JavaScript Flash 的紧密结合:在 JavaScript 可以直接调用 Flash 程序提供的接口。

          优点:实时性好(消息延时小);性能好(能支持大量用户)         

          缺点:因为 XMLSocket 没有 HTTP 隧道功能, XMLSocket 类不能自动穿过防火墙;

 

             因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制;

          应用:网络聊天室,网络互动游戏。

    java appet:在客户端使用 Java Applet ,通过 java.net.Socket java.net.DatagramSocket java.net.MulticastSocket 建立与服务器端的套接口连接,从而实现 服务器推送

          缺点:需要安装java虚拟机

    html5:此技术是一个在我认为中较好的技术了,内置了websocket,可以参考这里

    servlet3.0:作为 Java EE 6 体系中重要成员的 JSR 315 规范,将 Servlet API 最新的版本从 2.5 提升到了 3.0,这是近 10 年来 Servlet 版本号最大的一次升级,此次升级中引入了若干项令开发人员兴奋的特性,详解请看这里

  而我所想探讨的方向是comet:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ajax技巧制作得在线歌词搜索功效

    ajax技巧制作得在线歌词搜索功效

    2016-02-06 14:47

  •  Ajax技术统观(2)

    Ajax技术统观(2)

    2016-01-24 11:42

  • AJAX 技术汇总

    AJAX 技术汇总

    2016-01-24 10:04

  • Ajax技术全解之四(2)

    Ajax技术全解之四(2)

    2016-01-24 10:02

网友点评
m