From d0ade3c469a82252f3a358ad2d09024417b83e11 Mon Sep 17 00:00:00 2001
From: Azure <983547216@qq.com>
Date: Tue, 23 Jun 2026 10:49:23 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20WebSocket=20?=
=?UTF-8?q?=E5=9F=BA=E7=A1=80=E8=AE=BE=E6=96=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 6 ++++
.../config/WebSocketConfig.java | 28 ++++++++++++++++
.../ws/RoomWebSocketHandler.java | 32 +++++++++++++++++++
3 files changed, 66 insertions(+)
create mode 100644 src/main/java/com/webgame/webgamebackend/config/WebSocketConfig.java
create mode 100644 src/main/java/com/webgame/webgamebackend/ws/RoomWebSocketHandler.java
diff --git a/pom.xml b/pom.xml
index 237d4e5..e38ee41 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,12 @@
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
org.springframework.boot
diff --git a/src/main/java/com/webgame/webgamebackend/config/WebSocketConfig.java b/src/main/java/com/webgame/webgamebackend/config/WebSocketConfig.java
new file mode 100644
index 0000000..1d2f5b8
--- /dev/null
+++ b/src/main/java/com/webgame/webgamebackend/config/WebSocketConfig.java
@@ -0,0 +1,28 @@
+package com.webgame.webgamebackend.config;
+
+import com.webgame.webgamebackend.ws.RoomWebSocketHandler;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
+
+/**
+ * WebSocket 配置
+ *
+ * 注册房间 WebSocket 端点,路径为 /ws/room。
+ * 客户端通过 ws://host/ws/room?roomId=xxx&token=xxx 连接。
+ */
+@Configuration
+@EnableWebSocket
+@RequiredArgsConstructor
+public class WebSocketConfig implements WebSocketConfigurer {
+
+ private final RoomWebSocketHandler roomWebSocketHandler;
+
+ @Override
+ public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
+ registry.addHandler(roomWebSocketHandler, "/ws/room")
+ .setAllowedOrigins("*");
+ }
+}
diff --git a/src/main/java/com/webgame/webgamebackend/ws/RoomWebSocketHandler.java b/src/main/java/com/webgame/webgamebackend/ws/RoomWebSocketHandler.java
new file mode 100644
index 0000000..9558483
--- /dev/null
+++ b/src/main/java/com/webgame/webgamebackend/ws/RoomWebSocketHandler.java
@@ -0,0 +1,32 @@
+package com.webgame.webgamebackend.ws;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
+
+/**
+ * 房间 WebSocket 处理器
+ *
+ * 管理游戏房间内的实时通信,包括玩家加入、离开、游戏状态同步等。
+ * 后续任务将实现具体业务逻辑。
+ */
+@Component
+public class RoomWebSocketHandler extends TextWebSocketHandler {
+
+ @Override
+ public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+ // 后续任务实现
+ }
+
+ @Override
+ protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+ // 后续任务实现
+ }
+
+ @Override
+ public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+ // 后续任务实现
+ }
+}