当然可以!下面是一个简单的 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 客户端)<!DOCTYPE html>
<html>
<head>
<title>WebSocket 示例</title>
</head>
<body>
<h1>WebSocket Demo</h1>
<input type="text" id="messageInput" placeholder="输入消息">
<button onclick="sendMessage()">发送</button>
<div id="messages"></div>
<script>
const socket = new WebSocket("ws://localhost:8080/ws");
socket.onopen = () => {
console.log("连接成功");
};
socket.onmessage = (event) => {
const messagesDiv = document.getElementById("messages");
messagesDiv.innerHTML += "<p>" + event.data + "</p>";
};
function sendMessage() {
const input = document.getElementById("messageInput");
socket.send(input.value);
input.value = "";
}
</script>
</body>
</html>
spring-boot-starter-websocket
)http://localhost:8080/index.html
需要我帮你打包成完整项目或用 STOMP 协议做高级功能也可以~要的话告诉我 😄