From 41509b62424c19ffeb050bfea9a24442eebc016b Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Wed, 19 Feb 2025 12:31:33 +0100 Subject: [PATCH] TD-18: Refactor Channel Registration --- .../server/server/JsonWebsocketHandler.java | 2 +- .../server/channels/WebsocketConfig.java | 35 +++++++++++++++++++ .../connection/ConnectionWebsocketConfig.java | 24 ------------- .../MatchmakingWebsocketConfig.java | 25 ------------- .../channels/time/TimeWebsocketConfig.java | 24 ------------- 5 files changed, 36 insertions(+), 74 deletions(-) create mode 100644 src/main/java/de/towerdefence/server/server/channels/WebsocketConfig.java delete mode 100644 src/main/java/de/towerdefence/server/server/channels/connection/ConnectionWebsocketConfig.java delete mode 100644 src/main/java/de/towerdefence/server/server/channels/matchmaking/MatchmakingWebsocketConfig.java delete mode 100644 src/main/java/de/towerdefence/server/server/channels/time/TimeWebsocketConfig.java diff --git a/src/main/java/de/towerdefence/server/server/JsonWebsocketHandler.java b/src/main/java/de/towerdefence/server/server/JsonWebsocketHandler.java index 5d351cb..29fd481 100644 --- a/src/main/java/de/towerdefence/server/server/JsonWebsocketHandler.java +++ b/src/main/java/de/towerdefence/server/server/JsonWebsocketHandler.java @@ -17,7 +17,7 @@ import java.util.concurrent.ConcurrentHashMap; @AllArgsConstructor public abstract class JsonWebsocketHandler extends TextWebSocketHandler { private static final Logger logger = LoggerFactory.getLogger(JsonWebsocketHandler.class); - protected final Channel channel; + public final Channel channel; protected final SessionsService sessionsService; protected final Map sessionPlayers = new ConcurrentHashMap<>(); diff --git a/src/main/java/de/towerdefence/server/server/channels/WebsocketConfig.java b/src/main/java/de/towerdefence/server/server/channels/WebsocketConfig.java new file mode 100644 index 0000000..d242e1e --- /dev/null +++ b/src/main/java/de/towerdefence/server/server/channels/WebsocketConfig.java @@ -0,0 +1,35 @@ +package de.towerdefence.server.server.channels; + +import de.towerdefence.server.server.JsonWebsocketHandler; +import de.towerdefence.server.server.channels.connection.ConnectionWebsocketHandler; +import de.towerdefence.server.server.channels.matchmaking.MatchmakingWebsocketHandler; +import de.towerdefence.server.server.channels.time.TimeWebsocketHandler; +import de.towerdefence.server.session.SessionsService; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +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; + +@AllArgsConstructor +@Configuration +@EnableWebSocket +public class WebsocketConfig implements WebSocketConfigurer { + private static final String CHANNEL_BASE_PATH = "/ws/"; + @Autowired + private final SessionsService sessionsService; + @Override + public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { + registerJsonChannel(registry, new ConnectionWebsocketHandler(this.sessionsService)); + registerJsonChannel(registry, new MatchmakingWebsocketHandler(this.sessionsService)); + registerJsonChannel(registry, new TimeWebsocketHandler(this.sessionsService)); + } + + private void registerJsonChannel(WebSocketHandlerRegistry registry, JsonWebsocketHandler handler){ + registry.addHandler( + handler, + CHANNEL_BASE_PATH + handler.channel.getJsonName() + ).setAllowedOrigins("*"); + } +} diff --git a/src/main/java/de/towerdefence/server/server/channels/connection/ConnectionWebsocketConfig.java b/src/main/java/de/towerdefence/server/server/channels/connection/ConnectionWebsocketConfig.java deleted file mode 100644 index 0bd5a96..0000000 --- a/src/main/java/de/towerdefence/server/server/channels/connection/ConnectionWebsocketConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.towerdefence.server.server.channels.connection; - -import de.towerdefence.server.session.SessionsService; -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -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; - -@AllArgsConstructor -@Configuration -@EnableWebSocket -public class ConnectionWebsocketConfig implements WebSocketConfigurer { - @Autowired - private final SessionsService sessionsService; - @Override - public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { - registry.addHandler( - new ConnectionWebsocketHandler(this.sessionsService), - "/ws/connection" - ).setAllowedOrigins("*"); - } -} diff --git a/src/main/java/de/towerdefence/server/server/channels/matchmaking/MatchmakingWebsocketConfig.java b/src/main/java/de/towerdefence/server/server/channels/matchmaking/MatchmakingWebsocketConfig.java deleted file mode 100644 index 53930ed..0000000 --- a/src/main/java/de/towerdefence/server/server/channels/matchmaking/MatchmakingWebsocketConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.towerdefence.server.server.channels.matchmaking; - -import de.towerdefence.server.server.channels.connection.ConnectionWebsocketHandler; -import de.towerdefence.server.session.SessionsService; -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -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; - -@AllArgsConstructor -@Configuration -@EnableWebSocket -public class MatchmakingWebsocketConfig implements WebSocketConfigurer { - @Autowired - private final SessionsService sessionsService; - @Override - public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { - registry.addHandler( - new MatchmakingWebsocketHandler(this.sessionsService), - "/ws/matchmaking" - ).setAllowedOrigins("*"); - } -} diff --git a/src/main/java/de/towerdefence/server/server/channels/time/TimeWebsocketConfig.java b/src/main/java/de/towerdefence/server/server/channels/time/TimeWebsocketConfig.java deleted file mode 100644 index 2bb7421..0000000 --- a/src/main/java/de/towerdefence/server/server/channels/time/TimeWebsocketConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.towerdefence.server.server.channels.time; - -import de.towerdefence.server.session.SessionsService; -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -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; - -@AllArgsConstructor -@Configuration -@EnableWebSocket -public class TimeWebsocketConfig implements WebSocketConfigurer { - @Autowired - private final SessionsService sessionsService; - @Override - public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { - registry.addHandler( - new TimeWebsocketHandler(this.sessionsService), - "/ws/time" - ).setAllowedOrigins("*"); - } -}