Skip to content
快看这页儿写了啥...

webscoket 的连接原理?

题干

  • webscoket

题解

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。WebSocket 本质上一种计算机网络应用层的协议,用来弥补 http 协议在持久通信能力上的不足。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

特点:

  • 建立在 TCP 协议之上,服务器端的实现比较容易。
  • HTTP 协议有着良好的兼容性。默认端口也是 80 和 443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 可以发送文本,也可以发送二进制数据。
  • 没有同源限制,客户端可以与任意服务器通信。
  • 协议标识符是 ws(如果加密,则为 wss),服务器网址就是 URL

连接:

  • 首先,浏览器通过 WebSocket 构造函数,创建一个 WebSocket 对象,并向服务器发送一个 HTTP 请求,请求头中包含了一些特殊的字段,如 UpgradeConnectionSec-WebSocket-Key 等,表示这是一个 WebSocket 连接的请求。
  • 其次,服务器收到请求后,如果支持 WebSocket 协议,就会返回一个 HTTP 响应,响应头中也包含了一些特殊的字段,如 UpgradeConnectionSec-WebSocket-Accept 等,表示这是一个 WebSocket 连接的响应。
  • 最后,浏览器和服务器通过 HTTP 协议升级(Upgrade)为 WebSocket 协议,建立了一个持久的 TCP 连接,双方就可以通过这个连接进行数据的发送和接收。

贡献者

isboyjc's avatar isboyjc

浏览量(PV)  次  ·  独立访客(UV)  人次
不正经的前端 | 八股 · 欢迎 star ⭐