SpringBoot2.x系列教程(四十四)WebSocket基础知识简介

WebSocket简介

WebSocket协议是由HTML5定义的,基于TCP协议实现的一种网络协议,它实现了客户端与服务器全双工通信。也就是说通过该协议服务器可以主动发送信息给客户端。

何谓全双工

信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工,信息能够同时双向传送则称为全双工。

基本实现原理

WebSocket协议基于TCP协议实现,客户端和服务器只需要做一个握手的动作之后,形成了一条基于客户端和服务器之间的快速通道。后续两者之间便可以进行多次数据帧双向传输过程。

这样实现的目的是客户端和服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高工作效率和资源利用率。

传统Web推送实现

在没有WebSocket协议之前,服务器如何向浏览器端推送消息?

此时,通常的实现方式是在页面通过Ajax定时轮询,比如每隔1秒中向服务器发送一次HTTP请求,询问服务器是否有新消息,服务器返回结果。

这种形式缺点很明显,也就是说浏览器需要不断的向服务器发出HTTP请求,而HTTP请求包含较长的头部,有效信息相对较少,这样会造成很大的浪费。

再试想一下,如果同时打开很多浏览器页面,同时每个请求都会出现阻塞请求,会对服务器造成一定的并发量和资源浪费。

因此,HTML5定义的WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

WebSocket协议本质上是一个基于TCP的协议,因此与HTTP协议没有什么关系。

WebSocket的特点

基于上面所述WebSocket的机制,它拥有以下特点:

  • 首先最大的特点就是:开通了双工异步通信的功能,客户端和服务器可以双向平等对话。
  • 建立在TCP协议之上,服务器端的实现比较容易。
  • 与HTTP协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用HTTP协议,因此握手时不容易屏蔽,能通过各种HTTP代理服务器。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 更好的二进制支持,可以发送文本,也可以发送二进制数据。
  • 更强的时效性。

Spring Boot支持

在Spring Boot 2.x中专门添加了针对WebSocket的功能的start,可以快速集成。同时基于注解形式,可以快速实现WebSocket服务器端的功能。

小结

本篇文章我们了解了WebSocket相关的概念、原理、诞生条件以及特点。在了解完以上基础知识之后,后面我们将通过两种形式(基于WebSocket协议和基于STOMP协议)的实例来展示如何在Spring Boot中使用WebSocket。

发布了550 篇原创文章 · 获赞 5124 · 访问量 336万+

猜你喜欢

转载自blog.csdn.net/wo541075754/article/details/104505350
今日推荐