springboot中使用WebSocket详细一点的配置
时间: 2024-02-12 20:07:18 浏览: 28
在 Spring Boot 中使用 WebSocket 的详细配置步骤如下:
1. 添加 Maven 依赖
在 pom.xml 文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 配置 WebSocket
创建一个 WebSocketConfig 类,配置消息代理和消息终端。代码如下:
```
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
// 配置消息代理,将消息转发到特定的前缀路径下
config.enableSimpleBroker("/topic", "/queue");
// 配置消息代理前缀,客户端发送消息时需要加上此前缀
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
// 注册一个 WebSocket 端点,客户端连接时使用此路径
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
}
```
在上面的代码中,我们通过 `@EnableWebSocketMessageBroker` 注解启用了 WebSocket 消息代理功能。`configureMessageBroker` 方法配置了消息代理,`registerStompEndpoints` 方法注册了 WebSocket 端点。
3. 创建 WebSocket 控制器
创建一个 WebSocket 控制器,用于处理 WebSocket 请求。
```
@Controller
public class WebSocketController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) {
return new Greeting("Hello, " + message.getName() + "!");
}
}
```
在上面的代码中,我们通过 `@MessageMapping` 注解指定了请求的路径,`@SendTo` 注解指定了返回消息的路径。
4. 编写客户端代码
我们可以使用 JavaScript 或其他语言的 WebSocket 客户端连接到 WebSocket 服务器。
```
var socket = new SockJS('/ws');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
console.log(JSON.parse(greeting.body).content);
});
});
function sendName() {
stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
}
```
在上面的代码中,我们使用 `SockJS` 和 `Stomp` 创建了一个 WebSocket 连接,然后订阅了 `/topic/greetings` 主题,当服务端发送消息时,客户端就会接收到消息。
以上就是在 Spring Boot 中使用 WebSocket 的详细配置步骤。