在 Spring Boot 中,WebSocket 是一种非常有用的通信协议。WebSocket 可以使客户端和服务器之间实现双向通信,而不是传统的单向 HTTP 请求和响应。本文将介绍在 Spring Boot 中如何使用 WebSocket。
- 添加依赖
在 pom.xml 文件中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
- 创建 WebSocket 配置类
创建一个 WebSocketConfig 类,在类上加上 @Configuration 和 @EnableWebSocket 注解。在类中添加一个方法,返回一个 WebSocketHandler 对象。
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");}@Beanpublic WebSocketHandler myHandler() {return new MyHandler();}
}
其中,/myHandler 是 WebSocket 的端点,MyHandler 是具体的处理类,setAllowedOrigins(“*”) 表示允许跨域请求。
- 创建 WebSocket 处理类
创建一个 MyHandler 类实现 WebSocketHandler 接口,并重写其中的方法。具体实现可以根据业务需求来进行定制。
public class MyHandler implements WebSocketHandler {@Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {// 连接建立后的操作}@Overridepublic void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {// 处理收到的消息}@Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {// 处理传输错误}@Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {// 连接关闭后的操作}@Overridepublic boolean supportsPartialMessages() {return false;}
}
- 发送 WebSocket 消息
在前端页面中,可以使用 JavaScript 的 WebSocket 对象实现与服务器的通信。例如:
var socket = new WebSocket("ws://localhost:8080/myHandler");socket.onopen = function(event) {// 连接建立后的操作
};socket.onmessage = function(event) {// 处理收到的消息
};socket.onclose = function(event) {// 连接关闭后的操作
};socket.send("hello world");
- 测试 WebSocket
运行 Spring Boot 应用程序,并通过浏览器访问前端页面。在控制台中可以看到 WebSocket 连接的日志信息。可以使用 JavaScript 发送消息,也可以在 MyHandler 中主动发送消息。
session.sendMessage(new TextMessage("hello world"));
总结:
Spring Boot 提供了非常方便的操作 WebSocket 的方式,使得我们可以快速地实现双向通信功能。在实际开发中,可以根据具体业务需求来定制 WebSocket 的处理类。