Websocket个人初见解
在项目中 我需要一个实施一个双方实时通讯的方案 然而以前却从没接触过 后来发现这项技术大有前景
以下是我的个人见解(某些资料是借鉴别人的)
首先 什么是Websocket ?让我们来看看百度到的答案
WebSocket是HTML5推出的(协议) WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
WebSocket的实现原理
然而这项技术与轮询(Polling)以及长轮询有什么区别呢?
轮询的原理非常简单,就是浏览器每隔一段时间发送一次请求 这样就有非常大的被动性
长轮询是对定时轮询的改进和提高,目地是为了降低无效的网络传输。当服务器端没有数据更新的时候,连接会保持一段时间周期直到数据或状态改变或者时间过期,通过这种机制来减少无效的客户端和服务器间的交互。当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提高。
而Websocket只需要一次Http请求 就能做到源源不断的信息传送了
优点总结下来就是
1.客户端与服务端实时通讯
2.http协议的头部太大,且每个请求携带的几百上千字节的头部大部分是重复的,很多时候可能响应都远没有请求中的header空间大。如此多无效的内容传递是因为无法利用上一条请求内容,websocket则因为复用长连接而没有这一问题。
3.对比传统Http请求 减小了网络带宽和CPU利用率 对比轮询等传统技术具有很大的性能优势
轮询和 WebSocket 实现方式的网络负载对比图
通过这张图可以清楚的看出,在流量和负载增大的情况下,WebSocket 方案相比传统的 Ajax 轮询方案有极大的性能优势。这也是为什么我们认为 WebSocket 是未来实时 Web 应用的首选方案的原因。
但Websocket这项新技术也是有局限性的
1.各个浏览器支持程度不一 对旧版本的IE浏览器兼容性较差
2.服务器长期维护长连接需要一定的成本
3.成熟的Http生态下有大量的组件可以复用,它对开发者要求高了许多,这项新技术扩展起来比较慢
尽管 HTML5 WebSocket 目前还有一些局限性,但是已经是大势所趋,微软也明确表达了未来对 HTML5 的支持,而且这些支持我们可以在 Windows 8 和 IE10 里看到,我们也在各种移动设备,平板电脑上看到了 HTML5 和 WebSocket 的身影。WebSocket 将会成为未来开发实时 Web 应用的生力军应该是毫无悬念的了
转载于
https://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/
https://www.zhihu.com/question/20215561
https://www.zhihu.com/question/20155314