spring boot 集成websocket demo 实现对话功能
时间: 2023-10-29 09:17:40 浏览: 109
springboot+websocket实现聊天室
好的,这是一个简单的 Spring Boot 集成 WebSocket 实现对话功能的 Demo,你可以参考一下。
首先,我们需要在 pom.xml 文件中添加 WebSocket 和 Spring Web 依赖:
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
```
接下来,我们需要创建一个 WebSocket 配置类,用于注册 WebSocket 终端点和处理器:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new ChatWebSocketHandler(), "/chat").setAllowedOrigins("*");
}
}
```
在上面的代码中,我们注册了一个名为 ChatWebSocketHandler 的 WebSocket 处理器,并将其映射到路径 /chat。同时,我们通过 setAllowedOrigins 方法允许来自任何来源的 WebSocket 连接。
接下来,我们需要定义 WebSocket 处理器 ChatWebSocketHandler:
```java
public class ChatWebSocketHandler extends TextWebSocketHandler {
private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for (WebSocketSession s : sessions) {
if (s.isOpen()) {
s.sendMessage(message);
}
}
}
}
```
在上面的代码中,我们定义了一个名为 sessions 的列表,用于存储所有 WebSocket 连接的会话。在 afterConnectionEstablished 方法中,我们将新连接的会话添加到 sessions 列表中。在 handleTextMessage 方法中,我们将接收到的消息广播给所有连接的会话。
最后,我们需要创建一个简单的 HTML 页面,用于测试 WebSocket 连接:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebSocket Test</title>
</head>
<body>
<input type="text" id="message">
<button onclick="send()">Send</button>
<div id="output"></div>
<script>
var socket = new WebSocket("ws://" + window.location.hostname + ":8080/chat");
socket.onmessage = function(event) {
var output = document.getElementById("output");
output.innerHTML += event.data + "<br>";
};
function send() {
var message = document.getElementById("message").value;
socket.send(message);
}
</script>
</body>
</html>
```
在上面的代码中,我们使用 JavaScript 创建一个 WebSocket 连接,并将其连接到 ChatWebSocketHandler 处理器。我们还创建了一个文本框和一个按钮,用于发送消息。每当接收到一条消息时,我们将其添加到名为 output 的 div 中。
这就是一个简单的 Spring Boot 集成 WebSocket 实现对话功能的 Demo。你可以使用浏览器打开 HTML 页面,测试 WebSocket 连接。
阅读全文