什么是WebSocket

什么是WebSocket,WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工(full-duplex)通讯的协议。没有了 Request 和 Response 的概念,两者地位完全平等,连接一旦建立,就建立了真持久性连接,双方可以通过WebSocket随时向对方发送数据。

WebSocket在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准。并由 RFC7936 补充规范。WebSocket API 也被 W3C 定为标准。

WebSocket的官网是:http://www.websocket.org

WebSocket有如下特性:

  • 伴随着HTML5而出现
  • Web端的Socket, 服务器端和客户端可相互发送消息
  • 本质上是TCP连接
  • 为解决客户端与服务端实时通信而产生的技术

WebSocket优点

  • 节省通信开销:以前的WebServer使用推送或用轮询技术完成实时通信,需要客户端不停向服务器发送HTTP请求,但是HTTP的Header是非常长的,里面包含的数据可能只是一个很小的值,占用了很多带宽和服务器资源,用WebSocket可以避免这一问题
  • 服务器主动传送数据给客户端:WebSocket可以使服务器和客户端相互推送信息
  • 实时通信:一旦握手建立后,就可以实时通信。关于握手从字面上理解,握手过程可以定义为由两个人抓握和挥手,以象征问候,祝贺,同意或告别。在计算机科学中,握手是确保服务器与客户端同步的过程。握手是Web Socket协议的基本概念。下图显示了服务器与各种客户端握手 –

服务器与各种客户端握手

websocket协议描述

websocket为Web浏览器带来了丰富的桌面功能。它代表了一种在客户端/服务器Web技术中等待很长时间的演变。

websocket的主要特点如下 –

  • websocket协议正在标准化,在此协议的帮助下,Web服务器和客户端之间的实时通信是可能的。
  • websocket正在转变为跨平台标准,用于客户端和服务器之间的实时通信。
  • 该标准支持新型应用,实时Web应用程序的企业可以借助这项技术加速。
  • websocket的最大优点是它通过单个TCP连接提供双向通信(全双工)。

URL

HTTP有自己的一组模式,例如:httphttps。websocket协议也在其URL模式中定义了类似的模式。

下图显示了websocket URL的各个部分。

websocket URL的各个部分

浏览器支持情况

websocket协议的最新规范被定义为RFC 6455(一种提议的标准)。

主流浏览器都支持RFC 6455,如Internet Explorer,Mozilla Firefox,Google Chrome,Safari和Opera。

websocket与TCP、HTTP的关系

WebSocket与http协议一样都是基于TCP的,所以他们都是可靠的协议,Web开发者调用的WebSocket的send函数在browser 的实现中最终都是通过TCP的系统接口进行传输的。WebSocket和Http协议一样都属于应用层的协议,那么他们之间有没有什么关系呢?答案是肯定 的,WebSocket在建立握手连接时,数据是通过http协议传输的,这里面用到的只是http协议一些简单的字段。但是在建立连接之后,真正的数据传输阶段是不需要http协议参与的。

具体关系可以参考下图:

WebSocket与HTTP,TCPIP关系

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程