springmvc 实现websocket
时间: 2023-10-11 10:11:52 浏览: 52
Spring MVC可以很方便地集成WebSocket,以下是实现WebSocket的步骤:
1.添加依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring.version}</version>
</dependency>
```
2.配置WebSocket
在Spring MVC的配置文件中添加以下配置:
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new WebSocketHandler(), "/websocket").setAllowedOrigins("*");
}
}
```
其中,WebSocketHandler是自定义的一个处理器类,"/websocket"是WebSocket的访问路径,setAllowedOrigins("*")表示允许跨域访问。
3.编写WebSocket处理器
编写一个WebSocket处理器类,实现WebSocketHandler接口,并重写以下方法:
- afterConnectionEstablished:当WebSocket连接建立成功时调用该方法。
- handleMessage:当接收到客户端发送的WebSocket消息时调用该方法。
- handleTransportError:当WebSocket通信发生错误时调用该方法。
- afterConnectionClosed:当WebSocket连接关闭时调用该方法。
例如:
```
public class WebSocketHandler implements WebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("WebSocket连接建立成功");
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
System.out.println("接收到消息:" + message.getPayload());
session.sendMessage(new TextMessage("收到消息:" + message.getPayload()));
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
System.out.println("WebSocket通信发生错误");
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("WebSocket连接已关闭:" + closeStatus);
}
@Override
public boolean supportsPartialMessages() {
return false;
}
}
```
4.使用WebSocket
在前端页面中,使用JavaScript创建WebSocket对象,并指定WebSocket的访问路径:
```
var socket = new WebSocket("ws://localhost:8080/websocket");
```
然后,可以通过WebSocket对象发送和接收消息:
```
// 发送消息
socket.send("Hello, WebSocket!");
// 接收消息
socket.onmessage = function(event) {
console.log("接收到消息:" + event.data);
};
```
这样,就可以利用Spring MVC实现WebSocket了。