websocket全双工协议

websock简介

WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。

渊源

http协议设计之初,由于考虑到服务端如果能主动地让浏览器端推送广告的情况,所以我们现在所使用的http协议并不能由服务器端主动地向浏览器端发送数据。

发展与需求的诞生

随着移动互联网的诞生和HTML5的兴起,web上能做的事情也是越来越多,从一开始的用户提交数据到服务器,服务器返回结果。到现在的用户产生的数据提供给其它的用户。就这样,用户对互联网产品的要求也是越来越高,无论是从技术上、产品设计上、稳定性上、还是UI设计上都是越来越高。绝大多数的互联网产品都是秉承着"用户至上"的理念,当然也有些产品不是这样想的(比如12306)。随着互联网产品需求指数爆炸性的增长,当然迭代变更的需求也是很多的,有很多时候只用到基本的技术是很难实现并满足这些需求的。
就比如说,我们要设计一个web聊天室,把A的消息发送给B。由于http协议本身是不支持全双工的,也就是说浏览器端和服务器端是无法直接双向通信的。所以我们不能直接实现这个功能,但是可以间接实现,实现的方案如下:
  • 1.轮循(Polling)
  • 2.长轮循(Long Polling)
  • 3.插件(adobe)
  • 4.websocket
  • 5.Forever Iframe

应用场景

其实websocket协议定义了全双工的通信协议,目前主要应用于即时通信的应用场景。如果能得到充分的开发,其实也可以做很多事情。比如我们经常使用的用户识别,使用cookie和session做身份识别,因为cookie加密存储在本地,所以服务器始终能识别用户身份,用以弥补http协议无状态的缺陷。如果采用websocket的形式交互的话,建立连接以后会始终保持连接,就不需要使用cookie和session了。但是连接数增大到一定量级时,也会给服务器带来性能之忧。其实还有很多应用场景是有待开发的。
posted on 2017-04-18 16:05  最美代码  阅读(596)  评论(0编辑  收藏  举报