使用Ajax可以开发出基于预览器的具有高用高用户交互性和几乎不易察觉到的延迟web应用。实时的动态数据比如新闻标题,证券报价和拍卖实情都需要尽快地发送给用户。然而,AJAX仍然受限于web请求/响应架构的弱点,使得服务器不能摊送实时动志的web数据实现基于web的实时事件通知的方法:
1.HTTdiv拉取方式:在这种传统的方法中,客户端可以定义时间间隔区检查服务器上的数据。这种拉去方式的频率要足够高才能保证很高的数据度,但高频率可能会导致多余的检查,从而导致较高的网络流量。而另一方面,低频率则会导致错过更新的数据。理想地,拉取的时间间隔应该等于服务器状态改变的速度。
2httdiv流:这种方法由存在于不同的httdiv链接响应中或某个xmlhttdivrequest连接中的服务器数据流所组成。
3反转ajax:服务流用到ajax,是所谓的反转ajax或者comet。它使得服务器在某事件发生时可以发送消息给客户端,二不需要客户端显示的请求。目标在于达到状态变化的实时更新。comet使用了httdiv/1.1中的持续链接的特性。通过httdiv/1.1,除非另作说明,服务器和预览器之间的tcdiv链接会一直保持链接状态,直到其中一方发送了一条明显的“关闭连接的消息”或者有超时以及网络错误发生。
4长时间轮询:也是所谓的异步轮询,这种方式的纯服务器端推送方式和客户端拉取方式的混合。它是基于baye协议的。这个协议遵循基于主题的发布——订阅机制。在订阅了某个频道后,客户端和服务器之间的链接会保持打开状态,并保持一段事先定好的时间。如果服务端没有事情发生,而发生了超时,服务器端会请求客户端进行异步重新链接。如果有事件发生,服务器端会发送数据到客户端,然后客户端重新连接。
总结:如果我们想要搞数据一致性和高网络性能,我们应该选择推送方式,但是,到那样的目标,我们需要提前知道的数据更新时间间隔,然而,数据更新的时间间隔很少是静态不变并可以预知的,这使得拉取方式只有在数据是根据某种特定模式发布的情况才有用。