Websocket个人初见解

     在项目中 我需要一个实施一个双方实时通讯的方案 然而以前却从没接触过 后来发现这项技术大有前景

     以下是我的个人见解(某些资料是借鉴别人的)

     首先 什么是Websocket ?让我们来看看百度到的答案


    WebSocket是HTML5推出的(协议) WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。


       WebSocket的实现原理

在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:
1. Header
互相沟通的Header是很小的-大概只有 2 Bytes
2. Server Push
服务器的推送,服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器。

     然而这项技术与轮询(Polling)以及长轮询有什么区别呢?

     轮询的原理非常简单,就是浏览器每隔一段时间发送一次请求  这样就有非常大的被动性

     长轮询是对定时轮询的改进和提高,目地是为了降低无效的网络传输。当服务器端没有数据更新的时候,连接会保持一段时间周期直到数据或状态改变或者时间过期,通过这种机制来减少无效的客户端和服务器间的交互。当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提高。

     而Websocket只需要一次Http请求 就能做到源源不断的信息传送了

     优点总结下来就是

     1.客户端与服务端实时通讯

     2.http协议的头部太大,且每个请求携带的几百上千字节的头部大部分是重复的,很多时候可能响应都远没有请求中的header空间大。如此多无效的内容传递是因为无法利用上一条请求内容,websocket则因为复用长连接而没有这一问题。

     3.对比传统Http请求 减小了网络带宽和CPU利用率 对比轮询等传统技术具有很大的性能优势

      

轮询和 WebSocket 实现方式的网络负载对比图

      图 1. 轮询和 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



 


     

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值