springboot整合websocket
时间: 2023-09-02 08:12:00 浏览: 78
要在Spring Boot中实现WebSocket,需要按照以下步骤进行操作:
1. 添加WebSocket依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建WebSocket配置类
创建一个WebSocket配置类,用于配置WebSocket。
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler myHandler() {
return new MyHandler();
}
}
```
在这个配置类中,我们注册了一个WebSocket处理程序,并将其绑定到“/myHandler”路径上。允许所有来源访问该处理程序,以便我们可以从任何地方连接到它。
3. 创建WebSocket处理程序
创建一个WebSocket处理程序,用于处理来自客户端的WebSocket连接和消息。
```
public class MyHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for (WebSocketSession s : sessions) {
if (s.isOpen()) {
s.sendMessage(message);
}
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
}
```
在这个处理程序中,我们存储所有WebSocket会话,并当新会话建立时,将其添加到列表中。当收到文本消息时,我们将消息广播到所有会话。当会话关闭时,我们将其从列表中删除。
4. 创建WebSocket客户端
创建一个WebSocket客户端,用于连接到WebSocket服务器并向其发送消息。
```
public class MyClient extends WebSocketClient {
private WebSocketSession session;
public MyClient(URI serverUri) {
super(serverUri);
}
@Override
public void onOpen(ServerHandshake handshakedata) {
System.out.println("Connected to server");
}
@Override
public void onMessage(String message) {
System.out.println("Received message: " + message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
System.out.println("Disconnected from server");
}
@Override
public void onError(Exception ex) {
ex.printStackTrace();
}
public void sendMessage(String message) throws IOException {
session.getBasicRemote().sendText(message);
}
@Override
public void connect() throws InterruptedException, ExecutionException, IOException {
super.connect();
session = getConnection().get();
}
}
```
在这个客户端中,我们覆盖了WebSocketClient中的一些方法,以便在连接建立、消息接收、连接关闭和错误发生时进行处理。我们还添加了一个sendMessage()方法,以便我们可以向服务器发送消息。
5. 运行应用程序
在WebSocket服务器和客户端都准备就绪后,我们可以运行应用程序并开始测试。首先,运行WebSocket服务器:
```
@SpringBootApplication
public class WebSocketApplication {
public static void main(String[] args) {
SpringApplication.run(WebSocketApplication.class, args);
}
}
```
然后,运行WebSocket客户端:
```
MyClient client = new MyClient(new URI("ws://localhost:8080/myHandler"));
client.connect();
client.sendMessage("Hello, server!");
```
现在,您可以在WebSocket服务器日志中看到客户端连接的消息,并在WebSocket客户端日志中看到服务器发送的消息。
阅读全文