在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术
2009-11-14 00:00:00 来源:WEB开发网核心提示: 这种方法极度浪费网络资源,每一个轮询请求通常都会创建一个 TCP 套接字连接(除非 HTTP 1.1 将自己的 keepAlive 设置为 true,在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术(2),此时将使用之前创建的套接字),套接字连接本身代价极高,因而,同
这种方法极度浪费网络资源。每一个轮询请求通常都会创建一个 TCP 套接字连接(除非 HTTP 1.1 将自己的 keepAlive 设置为 true,此时将使用之前创建的套接字)。套接字连接本身代价极高。除此之外,每一次请求都要在网络上传输一些数据,如果请求未在服务器上发现任何更新,那么这样的数据传输就是浪费资源。如果在客户端机器上还运行着其他应用程序,那么这些轮询会减少传输数据可用的带宽。
即便是请求成功,确实为客户端传回了更新,考虑到轮询的频率,这样的更新也不是实时的。例如,假设轮询配置为每 20 秒一次,就在一次请求刚刚从服务器返回时,发生了更新。那么这次更新将在 20 秒后的下一次请求到来时才能返回客户端。因而,服务器上准备好供客户端使用的更新必须等待一段时间,才能真正地为客户端所用。对于需要以尽可能实时的方式运行的应用程序来说,这样的等待是不可接受的。
考虑到这样两个问题,对于需要关键、实时的服务器端更新的企业应用程序而言,轮询并不是最理想的方法。在这篇文章中,我将介绍多种可以替代轮询的方法。每一种替代方法在某些场景中都有自己的突出之处。我将说明这些场景,并展示需要实时服务器推送的一组 UI。
Ajax 应用程序中的服务器更新技术
让我们来具体看看用于更新来自服务器的信息的一些常用技术,这些技术模拟了服务器推送。
短轮询
短轮询也称为高频轮询,就是我在本文开头处介绍的技术。这种方法在以下情况中表现最好:
有足够的带宽可用。
根据统计数据,大多数时候,请求都能获得更新。例如,股市数据就总是有可用更新。
使用 HTTP 1.1 协议。设置 keepAlive=true,因而,同一个套接字连接始终保持活动状态,并可重用。
更多精彩
赞助商链接