参考来源:《构建实时Web应用》
大致的流程就是从Ajax->HTTP长轮询->HTTP流->WebSocket
<center>#实时性</center>
随着一个信息的流传广度的提高,其价值也会迅速的减小。
而处于一个信息爆炸的时代,大数据,云计算等的兴起,为什么google被称为google帝国,就是因为其让各种数据更容易的被用户发现,页面索引的速度意味着我们仍然需要在搜索时等待待发现的数据。所以实时WEB成为一个非常值得注意的概念,其实实时web已经发展多年了,比如Twitter,FaceBook,甚至微博等等东西,为什么可以这么火,就是因为各种数据都是实时的,比如一夜短短十几分钟便被转发点赞几十万的优衣库时间,诸如此类
为什么现在越来越多的人依赖于Internet?其实就是因为即时信息带给人们的便捷性和新鲜感。
HTTP绊脚石: 在设计之初,客户端可以使用该协议请求获得数据并且接受相应,但是,一些Web应用程序开始要求信息从服务器发送到客户端,所以我们需要主动的进入客户端。主动进入客户端需要非标准,复杂的解决方案。考虑到不同的web浏览器支持的特性不同,要同时支持这么多的特性,必定是复杂的。
其实实时也只是一个宽泛的概念,不同的时间实时性也是不同的。
那么在解决服务器和客户端的延迟问题上,其实就是用Ajax来解决的。Ajax即是异步javascript和XML,但是它十分的依赖于浏览器中的事件,所以它并没有真正的解决关于请求内容实时更新的任何问题。于是发明了setInterval()函数来自动刷新的机制,每隔一段时间就检查一次更新。
然而以数据结构的角度这是一种很浪费资源的行为,并且效率十分的低下。最明显的问题就是它创建了许多的空的请求,这为应用程序带来了许多不需要的开销。
然后出现了HTTP长轮询(long-polling):这种方法打开一个HTTP请求,并且等待一段时间以侦听服务器的返回。如果有新的数据,那么服务器就会发