当然可以!下面是一个简单的 Spring Boot WebSocket 示例,展示了如何搭建 WebSocket 服务端和客户端,实现基本的消息通信。
src
├── main
│ ├── java
│ │ └── com.example.websocketdemo
│ │ ├── WebSocketConfig.java
│ │ ├── WebSocketController.java
│ │ └── MyWebSocketHandler.java
│ └── resources
│ └── static
│ └── index.html
WebSocketConfig.java
package com.example.websocketdemo;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.*;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/ws")
.setAllowedOrigins("*"); // 开发环境允许所有域访问
}
}
MyWebSocketHandler.java
package com.example.websocketdemo;
import org.springframework.web.socket.*;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("连接建立: " + session.getId());
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
System.out.println("收到消息: " + message.getPayload());
// 回显消息
session.sendMessage(new TextMessage("服务端收到: " + message.getPayload()));
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
System.out.println("连接关闭: " + session.getId());
}
}
index.html
(WebSocket 客户端)