springboot整合websocket高级版
时间: 2023-09-14 09:05:06 浏览: 50
好的,下面是Spring Boot整合WebSocket的具体步骤:
1. 在pom.xml中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建WebSocket配置类,继承自`AbstractWebSocketMessageBrokerConfigurer`,并重写其中的方法:
```java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS();
}
}
```
其中,`configureMessageBroker`方法用于配置消息代理,这里使用了简单的内存消息代理,并定义了消息前缀`/topic`,`registerStompEndpoints`方法定义了WebSocket入口点,这里使用了SockJS。
3. 创建WebSocket处理器:
```java
@Component
public class WebSocketHandler extends TextWebSocketHandler {
private final SimpMessagingTemplate template;
@Autowired
public WebSocketHandler(SimpMessagingTemplate template) {
this.template = template;
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
template.convertAndSend("/topic/messages", message.getPayload());
}
}
```
这里创建了一个名为`WebSocketHandler`的处理器,继承自`TextWebSocketHandler`,并在构造方法中注入了`SimpMessagingTemplate`,用于发送消息。`handleTextMessage`方法用于处理接收到的WebSocket消息,这里将消息转发到`/topic/messages`主题。
4. 创建Controller类,处理WebSocket连接请求:
```java
@Controller
public class WebSocketController {
@MessageMapping("/chat")
@SendTo("/topic/messages")
public String sendMessage(String message) {
return message;
}
}
```
该Controller类定义了一个名为`WebSocketController`的控制器,使用了`@MessageMapping`注解,用于处理WebSocket消息,同时使用`@SendTo`注解,将处理结果发送到`/topic/messages`主题。
5. 添加web页面,用于测试WebSocket连接:
```html
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Example</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/sockjs/1.1.4/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/stomp.js/2.3.3/stomp.min.js"></script>
</head>
<body>
<div>
<form id="messageForm">
<input type="text" id="messageInput"/>
<button type="submit">Send</button>
</form>
</div>
<div id="messages"></div>
<script>
var stompClient = null;
$(document).ready(function () {
var socket = new SockJS('/ws');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/messages', function (message) {
showMessage(JSON.parse(message.body));
});
});
$('#messageForm').submit(function (e) {
e.preventDefault();
var message = $('#messageInput').val();
stompClient.send("/app/chat", {}, message);
$('#messageInput').val('');
});
});
function showMessage(message) {
$('#messages').append('<div>' + message + '</div>');
}
</script>
</body>
</html>
```
该页面使用了SockJS和STOMP.js来实现WebSocket连接,通过`stompClient.send`方法向WebSocket发送消息,通过`stompClient.subscribe`方法接收WebSocket消息,并通过`showMessage`方法展示在页面上。
6. 运行Spring Boot应用程序,访问web页面,测试WebSocket连接是否正常。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)