先说下简介,这是菜鸟教程
上的说明:
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。 现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。 HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
在我们企业项目开发过程中,可能会遇到如下业务场景:推送、扫码、聊天、远程投放等。这些业务场景都有一个共同点那就是需要服务器主动发消息至客户端,如果服务器不主动发送消息,那么就需要客户端时时刻刻轮询地发HTTP请求来确认是否有自己的消息,这样的处理方式虽然可以达到解决问题的目的,但是并不优雅,而且频繁的请求也占用了过多的无效资源。目前大部分主流浏览器已经支持webSocket通讯方式,从而实现客户端和服务器实现长连接,服务器主动发消息至客户端,我们利用这一技术可以高效实现实际业务。我就以一个简单的Demo演示SpringBoot实现WebSocket服务。
SpringBoot对websocket的starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
另外是一些工具jar
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>