概述

Spring Boot

Spring Boot:是为了简化使用 Spring 开发的应用产生的,它使用“习惯由于配置”的理念使项目快速运行起来。使用 Spring Boot 你可以不用或者只需要很少的 Spring 配置,你可以仅仅使用一个 java -jar 命令就运行起一个 java 项目。

优点

快速构建项目。

开箱即用,提供各种默认配置来简化项目配置。

项目可以独立运行,无须外部依赖 Servlet 容器。

对主流框架的无配置集成。

提供各种 starter 简化 Maven 配置。

WebSocket

WebSocket:是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 WebSocket 通信协议于2011年被IETF定为标准RFC 6455,WebSocketAPI 被W3C定为标准。 在WebSocket API 中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

特点

为浏览器和服务端提供了双工异步通信的功能,即服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

建立在 TCP 协议之上,服务器端的实现比较容易。

与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

数据格式比较轻量,性能开销小,通信高效。

可以发送文本,也可以发送二进制数据。

没有同源限制,客户端可以与任意服务器通信。

协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

STOMP

STOMP:即Simple (or Streaming) Text Orientated Messaging Protocol,它是一个简单的文本消息传输协议,属于 WebSocket 的子协议,提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。

优点

使用 WebSocket 需要增加浏览器的兼容支持,如 IE 10+、Chrome 13+、Firefox 6+,而 STOMP 是一个更高级的协议,它使用一个基于帧(frame)的格式来定义消息,与 HTTP 的 request 和 response 类似。

项目构建

添加 WebSocket 和 Thymeleaf 依赖

springboot socketio客户端 springboot stomp websocket_客户端

Java

新建 websocket 配置类

springboot socketio客户端 springboot stomp websocket_客户端_02

Java

通过 @EnableWebSocketMessageBroker 注解来开启使用 STOMP 协议来传输基于代理(message broker)的消息。

通过复写父类的 registerStompEndpoints 方法,注册 STOMP 协议的节点来映射指定的 URL 并指定使用 SocketJS 协议。

通过复写父类的 configureMessageBroker 方法,来配置一个广播式消息代理。

新建浏览器像服务端发送消息封装类 ClientRequestMessage

springboot socketio客户端 springboot stomp websocket_客户端_03

Java

新建服务端像浏览器端发送消息封装类 ServerResponseMessage

springboot socketio客户端 springboot stomp websocket_服务器_04

Java

新建请求控制器 WsController

springboot socketio客户端 springboot stomp websocket_客户端_05

Java

通过 @MessageMapping 注解接收浏览器端发送的消息。

通过 @SendTo 注解像浏览器端广播消息。

构建浏览器端

需要下载 stomp.js、sockjs.min.js、jquery.js 几个脚本支持。将几个文件放在 src/main/resources/static 下。

演示页面 ws.html 放在 src/main/resources/templates 下

springboot socketio客户端 springboot stomp websocket_客户端_06

Java

springboot socketio客户端 springboot stomp websocket_Java_07

Java

新建 WebMvcConfig 类

springboot socketio客户端 springboot stomp websocket_Java_08

Java

运行效果

springboot socketio客户端 springboot stomp websocket_Java_09

Java

以上所述是小编给大家介绍的Spring Boot 模块组成,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的!