前后端分离,使用webSocket如何建立连接,给一份java后端实例代码
时间: 2024-02-16 07:05:28 浏览: 97
websocket Java后端案例
5星 · 资源好评率100%
好的,下面是一个使用 Java 语言的 WebSocket 后端实例代码,示例使用 Spring Boot 和 Spring WebSocket 框架:
1. 首先,需要在 pom.xml 文件中添加 Spring WebSocket 的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建一个 WebSocket 配置类,用于注册 WebSocket 处理器和拦截器等:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler(), "/my-websocket")
.addInterceptors(new MyWebSocketInterceptor());
}
@Bean
public WebSocketHandler myWebSocketHandler() {
return new MyWebSocketHandler();
}
@Bean
public MyWebSocketInterceptor myWebSocketInterceptor() {
return new MyWebSocketInterceptor();
}
}
```
3. 创建一个 WebSocket 拦截器,用于对 WebSocket 连接进行拦截和处理:
```java
public class MyWebSocketInterceptor implements HandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
// 在这里可以进行一些身份验证和授权等操作
return true;
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
Exception ex) {
// Do nothing
}
}
```
4. 创建一个 WebSocket 处理器,用于处理 WebSocket 连接收到的消息和发送消息:
```java
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// WebSocket 连接建立成功
super.afterConnectionEstablished(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 接收到 WebSocket 消息
super.handleTextMessage(session, message);
// 处理 WebSocket 消息
String payload = message.getPayload();
session.sendMessage(new TextMessage("You said: " + payload));
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
// WebSocket 连接错误
super.handleTransportError(session, exception);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
// WebSocket 连接关闭
super.afterConnectionClosed(session, status);
}
}
```
5. 最后,在 Controller 中添加一个 WebSocket 的请求处理方法,用于返回 WebSocket 的 HTML 页面:
```java
@Controller
public class MyController {
@GetMapping("/my-websocket")
public String myWebSocket() {
return "my-websocket.html";
}
}
```
这样,一个简单的使用 Java 和 Spring WebSocket 框架实现的 WebSocket 后端就完成了。注意,在这个示例中,WebSocket 的地址为 /my-websocket,可以根据实际需要进行修改。
阅读全文