原文链接:
几种实时更新技术的对比与分析
在标准的HTTP的“请求—响应”模式中,浏览器发出一个请求,服务器端响应这个请求,这就意味着直用浏览器发送请求,服务器才能够返回更新信息。
那么我们如何才能实时获取服务器的更新信息呢?,当前有很多种方法可以实现,例如传统轮询、长轮询、HTTP流和最近兴起的WebSocket协议等等。
传统轮询:
传统轮询采用浏览器不断发送请求,而服务器在收到请求后立即返回信息的方式进行。这种方式比较适合发送请求较少的情况下使用(因为请求发送过多服务器很快就崩溃了)。
例如邮箱客户端可以每十分钟检查一次是否有新邮件到来,使用这种方式简单有效。但是如果需要信息实时反馈给客户端时,请求的发送就非常频繁,这种方式的实现效率是非常低的!。
长轮询:
在长轮询这种解决方案中浏览器不断发送请求,而服务器只在有新信息更新的时候才响应请求。在客户端看来,这种方式与传统轮询的方式完全一样。而在服务器端看来,这种方式与长请求方式非常类似,
而且比传统轮询方式有更好的性能和扩展性。
一个响应可以保持打开状态多久呢?浏览器设置的时间范围为5分钟,而一些网络中介——例如代理服务器——设置的时间范围可能更短。所以,即使没有信息更新,一个长轮询请求也要在时间范围内完成响应,以便浏览器发送下一个新请求。IETF的文档建议将时间范围设置为30至120秒之间,但通常实际的时间范围取决于你所使用的网络中介所设置的时间。
长轮询方式可以显著的降低实时信息更新的延时现象,特别是在新信息的更新间隔时间不确定(不规律)的情况下。但是,信息更新频率越高,这种方式就越像传统轮询一样效率低下。
HTTP流:
HTTP流这种解决方案采用浏览器不断发送请求,而服务器只在有信息可以返回时相应请求。但是注意这与长轮询不同,HTTP流中服务器保持相应的打开状态,并且随着请求的到来不断向响应中添加更新信息。这种方式不需要进行轮询(这样可以显著的改善性能),这也是与标准HTTP“请求—相应”的最大不同之处。例如客户端和服务器可以就相应流达成协议,以解决客户端如何识别相应就中不同的更新信息。但是,网络中介可以将相应流缓存,这样就阻止了这种方式的进行。这也是HTTP流不如长轮询方式使用广泛的主要原因。
WebSocket协议:
浏览器发送一个HTTP请求,这个请求将在服务器端被转换为WebSocket协议,服务器在确认有更新信息后再返回响应。这样一来,浏览器和服务器之间就可以建立一个双向连接,通过TCP协议按帧来发送数据。
WebSocket协议的设计就是用来避免轮询,并且非常适合在浏览器和服务器之间频繁交换信息的情况下使用。通过HTTP的初始化握手可以保证 WebSocket请求通过防火墙。但是,由于主流浏览器很少支持WebSocket协议(Chrome支持的哦),因此基于WebSocket协议的应用开发具有非常大的挑战性,而且在经过网络中介时还存在更多问题。
WebSocket以浏览器和服务器双向交互文本信息或二进制数据为中心。这导致它与传统的RESTful、以HTTP为基础的架构有很大的不同。事实上,还有很多其他协议需要建立在WebSocket基础之上,例如XMPP、AMQP、STOMP等,而哪个(些)协议将成为主流协议还需要拭目以待。
IETF组织已经将WebSocket协议制定为一个标准,而由W3C组织制定的WebSocket API标准也已经进入了最后一个阶段。很多Java工具——包括Servlet容器Jetty和Tomcat——都已经开始支持WebSocket。 Servlet 3.1规范也很有可能将WebSocket包含在内,同时一个新的JSR规范也将定义WebSocket API。
总结:
尽管挑选出一个最优秀的方式很诱人,但是——和其他问题一样——最简单最符合实际面对的问题的解决方式才是最好的解决方式。WebSocket协议给了我们很好的解决方案,而且也将适用于越来越多的情况下。浏览器的支持情况和网络问题先放在一边,双向信息的传输和RESTful的HTTP架构是两种完全不同的方式。在REST中你为资源建模并应用HTTP动词来获取资源。而在双向信息传输中,你将按规定路线发送、过滤、处理信息。记住这点不同非常的重要。
分享到:
相关推荐
几种无功补偿技术的分析和比较 几种无功补偿技术的分析和比较
"无线传感器网络中几种无线通信技术的分析比较" 从标题和描述中可以看出,这篇论文的主要内容是对无线传感器网络中几种无线通信技术的分析比较。无线传感器网络是一个多跳的自组织网络系统,由大量廉价微型传感器...
为了更好地理解这四种实时操作系统的实时性差异,我们可以通过以下几个方面来进行详细的比较分析: ##### VxWorks VxWorks 是一种广泛用于军事和航空领域的强实时操作系统,以其卓越的实时性能著称。它支持占先式...
### 几种嵌入式实时操作系统的分析与比较 #### 摘要 随着嵌入式技术的发展,实时操作系统(RTOS)在嵌入式领域的应用越来越广泛。由于RTOS支持多任务处理,使得软件开发变得更加高效且易于维护,同时提高了系统的...
摘要 由于嵌入式实时操作系统可以支持多任务,使得程序开发更加容易,在便于维护的同时还能提高系统的稳定性和可靠性,所以逐步成为嵌入式系统的重要组成...本文通过对这4种操作系统的主要性能进行分析与比较,归纳出
本篇文章将深入探讨几种主流的图像去噪方法,包括小波变换和Contourlet变换,并对它们进行分析比较。 首先,我们来了解小波变换。小波变换是一种多尺度分析工具,它能同时提供时间和频率信息,具有良好的局部化特性...
本报告将对几种常见的固井质量检测技术进行对比分析。 1. 声波变密度测井 声波变密度测井是一种常见的检测方法,由于其仪器的国产化和丰富的信息采集能力,通常在每个深度采样点获取声波全波列图,为油田生产提供...
几种双馈式变速恒频风电机组低电压穿越技术对比分析 几种双馈式变速恒频风电机组低电压穿越技术对比分析
本文将对几种用于解决这个问题的技术方案进行比较分析,主要关注其体系流程、难点解决方案以及优缺点。 1. **基于Web表单的数据录入方案** 这是最常见的技术方案,用户通过网页表单直接输入数据。优点是用户界面...
通过对ZigBee与Wi-Fi这两种技术的比较分析,我们可以看到它们各自的优势和适用场景。在选择合适的短距离无线通信技术时,需要根据具体的应用需求来决定。例如,在需要低功耗、低成本解决方案的情况下,ZigBee是更好...
纹理分析是计算机视觉和图像处理领域的一个重要主题,主要用于对图像中的纹理进行量化描述和识别。...这两种方法以及其他类似的纹理分析技术在图像识别、医学影像分析、遥感图像处理等多个领域都有着广泛的应用。
### MATLAB中几种功率谱估计函数的比较分析与选择 #### 摘要 功率谱估计是一种重要的频谱分析方法,在诸多领域如雷达、声纳、天文学、生物医学及地质勘探中发挥着关键作用。本篇文章针对MATLAB中几种常用的功率谱...
技术本身没有优劣势,但电信运营商在开展具体业务时,需要考虑如成本、与电信运营商的关联度、安全性、技术成熟度、用户使用习惯等诸多因素,下面我们就一些重要的方面对几种技术进行简单的比较,见表1。...
《基于WSN的几种短距离无线通信技术应用分析》这篇论文深入探讨了在无线传感网络(WSN)中,几种主流的短距离无线通信技术的应用和特性。文章着重于技术的安全性、通信速度、成本以及适用场景,为WSN的通信解决方案...
通过对几种常见搜索引擎的性能比较与分析,本论文旨在提高人们对搜索引擎的理解,引导他们更有效地利用这些工具。搜索引擎作为信息时代的得力助手,其持续优化和创新将对我们的生活产生深远影响。通过深入研究和比较...
空间分析中几种插值方法的比较 空间分析是 GIS 的一个重要方面,其应用领域非常广泛,包含空间插值、空间数据分析、空间统计、地质统计学等。空间插值方法是空间分析中的一种重要技术,它可以将已知区域的数据推断...
本文将深入探讨几种常见的高压断路器在线检测技术,包括其原理、优势、局限性以及在实际应用中的对比。 一、超声波检测技术 超声波检测是利用断路器在操作时产生的超声波信号来判断其内部状况。当断路器存在缺陷,...
本文将对比分析几种主流的实时以太网技术:ProfiNet IRT、Ethernet POWERLINK、SERCOS III、EtherCAT以及Ethernet/IP,以帮助读者更好地理解每种技术的特点及其适用场景。 #### 1. ProfiNet IRT - **概述**:...
本文采用了比较分析的研究方法,即通过将人工智能技术与核能技术、光伏技术进行对比。在基础理论、技术发展和市场应用三个维度上,比较分析可帮助揭示不同技术之间的发展规律和相互作用。这种分析能够为人工智能技术...