springboot整合websocket的实例程序
时间: 2023-10-17 08:15:14 浏览: 105
以下是一个简单的Spring Boot应用程序,它使用WebSocket技术实现了一个简单的聊天室:
1. 添加依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建WebSocket配置类
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(chatWebSocketHandler(), "/chat").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler chatWebSocketHandler() {
return new ChatWebSocketHandler();
}
}
```
上面的代码创建了一个WebSocket配置类,并将ChatWebSocketHandler注册为WebSocket处理程序。
3. 创建WebSocket处理程序
```
public class ChatWebSocketHandler extends TextWebSocketHandler {
private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for (WebSocketSession s : sessions) {
if (!s.equals(session)) {
s.sendMessage(message);
}
}
}
}
```
上面的代码创建了一个名为ChatWebSocketHandler的WebSocket处理程序。它维护了一个WebSocket会话列表,并在连接建立和连接关闭时更新该列表。此外,它实现了handleTextMessage方法,以便在接收到文本消息时将其广播到所有WebSocket会话。
4. 创建控制器
```
@RestController
public class ChatController {
@GetMapping("/")
public String index() {
return "index";
}
}
```
上面的代码创建了一个名为ChatController的控制器,它处理/index请求并返回一个简单的文本响应。
5. 创建HTML文件
```
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Chat</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function() {
var socket = new WebSocket("ws://localhost:8080/chat");
socket.onmessage = function(event) {
$("#messages").append("<div>" + event.data + "</div>");
};
$("#send").click(function() {
var message = $("#message").val();
socket.send(message);
$("#message").val("");
});
});
</script>
</head>
<body>
<h1>WebSocket Chat</h1>
<div id="messages"></div>
<input type="text" id="message">
<button id="send">Send</button>
</body>
</html>
```
上面的代码创建了一个简单的HTML文件,它使用JavaScript创建了一个WebSocket连接,并在发送消息时将其添加到页面上的消息列表中。
6. 运行应用程序
现在,您可以运行该应用程序并访问http://localhost:8080/以使用WebSocket聊天室。
阅读全文