(给前端大学加星标,提升前端技能.)
作者:木木匠
https://juejin.im/post/5c693a4f51882561fb1db0ff
概述
上一篇文章《浅析一次HTTP请求 https://juejin.im/post/5c3b21e4e51d455231347349 》我们分析了简单的一次 HTTP 请求具体是怎么样完成的,分析了 HTTP 协议的数据结构,如何连接,如何断开,又是如何多路复用的,那么今天我们来聊聊另外一个协议,WebSocket。由于 WebSocket 的协议的内容非常多,本文只会取其冰山一角进行简单阐述,不会铺开详细说。二、什么是 WebSocket
2.1 WebSocket 产生的背景
在 WebSocket 协议出现以前,创建一个和服务端进双通道通信的 web 应用,需要依赖HTTP协议,进行不停的轮询,这会导致一些问题:
服务端被迫维持来自每个客户端的大量不同的连接
大量的轮询请求会造成高开销,比如会带上多余的header,造成了无用的数据传输。
所以,为了解决这些问题,WebSocket 协议应运而生。
2.2 WebSocket 的定义
WebSocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。(维基百科)
三、WebSocket 的基础帧结构分析
下图是我参考 RFC6455 5.2章节画的websocket 基础帧的数据结构图,接下里我们重点解析下数据结构图。