后端是springboot
时间: 2023-07-08 08:50:51 浏览: 44
好的,以下是一个基于 Spring Boot 的 WebSocket 后端代码示例:
首先,需要在 pom.xml 文件中添加 WebSocket 的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
然后,创建一个 WebSocket 配置类,用于注册 WebSocket 处理器:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/websocket");
}
}
```
其中,`MyWebSocketHandler` 是自定义的 WebSocket 处理器,用于处理客户端的连接、消息和关闭事件。下面是一个示例代码:
```java
public class MyWebSocketHandler extends TextWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(MyWebSocketHandler.class);
private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
logger.info("WebSocket connected: " + session.getId());
sessions.add(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
logger.info("Message received from " + session.getId() + ": " + message.getPayload());
TextMessage response = new TextMessage("Hello, " + message.getPayload() + "!");
session.sendMessage(response);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
logger.info("WebSocket disconnected: " + session.getId());
sessions.remove(session);
}
}
```
在上面的代码中,`afterConnectionEstablished` 方法用于处理客户端连接事件,`handleTextMessage` 方法用于处理客户端发送的消息,`afterConnectionClosed` 方法用于处理客户端关闭连接事件。`sessions` 是一个保存所有连接的列表,使用 `CopyOnWriteArrayList` 实现线程安全。
最后,在控制器中添加一个 WebSocket 端点,用于接收客户端的连接请求:
```java
@RestController
public class MyController {
@GetMapping("/websocket")
public String websocket() {
return "websocket";
}
}
```
启动应用程序后,可以使用浏览器或其他 WebSocket 客户端连接到 `ws://localhost:8080/websocket`,然后发送消息,服务端会回复一条消息。当客户端关闭连接时,服务端会相应地处理。
需要注意的是,上面的示例代码只是一个简单的 WebSocket 示例,实际应用中还需要考虑更多的情况,如错误处理、协议协商等。