一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情
开启文章之前,先了解长链接和短链接。
短链接每次都要通过建立三次握手才可以发送消息。发送完则断开
长链接则通过三次握手发起连接后,在一定时间内均保持连接不断开。
WebSocket
- 是一种双向通信协议
- H5提出的建立全双工通信的http连接,帮助客户端和服务器端建立实时通信
- websocket连接始终保持打开状态,直至客户端或服务器终止请求。
- 符合标准,其延迟基本可以忽略。具有准确性和效率性。使实时通信变得简单高效。
- 满足除低版本ie外大部分浏览器,浏览器(IE10+)基本上都已经原生支持WebSocket了。
连接过程:
1.客户端发起HTTP请求,通过三次握手建立TCP连接,在 http 请求里存放 websocket 支持的版本号等信息;
2.服务器收到客户端的握手请求后,同样采用HTTP协议回应数据给客户端;
3.客户端收到连接成功的消息后,即建立起持久性连接。
WebSocket与http的比较
- 不同
| WebSocket | HTTP |
|---|---|
| 双向通讯协议 | 单向通讯协议 |
| 浏览器和服务器握手进行建立连接(持久连接) | 浏览器向服务器发起连接(短连接) |
| 协议以ws/wss开头 | http/https |
| 有状态的 | 无状态的 |
| 可以跨域 | 需通过其它方法解决跨域问题 |
-
联系
WebSocket需要HTTP协议对服务器和浏览器建立一条单独的TCP通道进行数据传送,后续的数据的真正传输并不需要HTTP。也就是说,在WebSocke中,浏览器和服务器完成一次 HTTP 握手后可进行双向数据传输。
-
相同点
都是基于TCP的应用层协议,
都可以在网络中传输数据,在连接建立的过程中对错误的处理方式相同。
WebSocket与socket的比较
| 区别 | WebSocket | socket |
|---|---|---|
| 原理 | 应用层协议 | 位于应用层和传输控制层之间的一组接口 |
| 传输层次 | 在单个 TCP 连接上进行全双工通信的协议,使得客户端和服务器之间实时通讯变得简单。 | 是对 TCP/IP 的封装,可以通过 socket 来操作底层 TCP/IP 协议族通信 |
| 运用程度 | 更易用(一个完整的 应用层协议,包含一套标准的 API ) | 更灵活(把复杂的TCP/IP协议族隐藏在Socket接口后面) |