错综复杂的关系(WebSocket/http/socket)

137 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情
开启文章之前,先了解长链接和短链接。

短链接每次都要通过建立三次握手才可以发送消息。发送完则断开
长链接则通过三次握手发起连接后,在一定时间内均保持连接不断开。

WebSocket

  • 是一种双向通信协议
  • H5提出的建立全双工通信的http连接,帮助客户端和服务器端建立实时通信
  • websocket连接始终保持打开状态,直至客户端或服务器终止请求。
  • 符合标准,其延迟基本可以忽略。具有准确性和效率性。使实时通信变得简单高效。
  • 满足除低版本ie外大部分浏览器,浏览器(IE10+)基本上都已经原生支持WebSocket了。

连接过程:

1.客户端发起HTTP请求,通过三次握手建立TCP连接,在 http 请求里存放 websocket 支持的版本号等信息;

2.服务器收到客户端的握手请求后,同样采用HTTP协议回应数据给客户端;

3.客户端收到连接成功的消息后,即建立起持久性连接。

WebSocket与http的比较

  • 不同
WebSocketHTTP
双向通讯协议单向通讯协议
浏览器和服务器握手进行建立连接(持久连接)浏览器向服务器发起连接(短连接)
协议以ws/wss开头http/https
有状态的无状态的
可以跨域需通过其它方法解决跨域问题
  • 联系

    WebSocket需要HTTP协议对服务器和浏览器建立一条单独的TCP通道进行数据传送,后续的数据的真正传输并不需要HTTP。也就是说,在WebSocke中,浏览器和服务器完成一次 HTTP 握手后可进行双向数据传输。

  • 相同点

    都是基于TCP的应用层协议,

    都可以在网络中传输数据,在连接建立的过程中对错误的处理方式相同。

WebSocket与socket的比较

区别WebSocketsocket
原理应用层协议位于应用层和传输控制层之间的一组接口
传输层次在单个 TCP 连接上进行全双工通信的协议,使得客户端和服务器之间实时通讯变得简单。是对 TCP/IP 的封装,可以通过 socket 来操作底层 TCP/IP 协议族通信
运用程度更易用(一个完整的 应用层协议,包含一套标准的 API )更灵活(把复杂的TCP/IP协议族隐藏在Socket接口后面)