WebSocket是什么
WebSocket 是基于 TCP 的一种新的应用层网络协议。它实现了浏览器与服务器全双工通信,即允许服务器主动发送信息给客户端。因此,在 WebSocket 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输,客户端和服务器之间的数据交换变得更加简单。
WebSocket的真正美妙之处在于它们总共使用了 1 个 TCP 连接,并且所有通信都是通过这个单一的长寿命 TCP 连接完成的。这大大减少了使用 WebSockets 构建实时应用程序所需的网络开销,因为不需要对 HTTP 端点进行持续轮询。
关键词
:应用层协议、基于 TCP、全双工通信、一次握手、持久连接、双向数据传输
WebSocket与http之间的区别
相同点:
都是一样基于TCP的,都是可靠性传输协议。都是应用层协议。
联系:
WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。
下面一张图说明了 HTTP 与 WebSocket的主要区别:
- WebSocket 是双向通信协议,模拟Socket协议,可以双向发送或接受信息,而HTTP是单向的
- WebSocket 是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接。
注意:虽然HTTP/2也具备服务器推送功能,但HTTP/2 只能推送静态资源,无法推送指定信息。
WebSocket使用场景
如何建立连接
在 WebSocket 开始通信之前,通信双方需要先进行握手,WebSocket 复用了 HTTP 的握手通道
,即客户端通过 HTTP 请求与 WebSocket 服务端协商升级协议。协议升级完成后,后续的数据交换则遵照 WebSocket 的协议。
利用HTTP完成握手有什么好处
- 让 WebSocket 和 HTTP 基础设备兼容(运行在 80 端口 或 443 端口)
- 可以复用 HTTP 的 Upgrade