TD-18: Refactor Channel Registration

This commit is contained in:
Snoweuph 2025-02-19 12:31:33 +01:00
parent 2681ecf35d
commit 41509b6242
Signed by: snoweuph
GPG key ID: BEFC41DA223CEC55
5 changed files with 36 additions and 74 deletions

View file

@ -17,7 +17,7 @@ import java.util.concurrent.ConcurrentHashMap;
@AllArgsConstructor @AllArgsConstructor
public abstract class JsonWebsocketHandler extends TextWebSocketHandler { public abstract class JsonWebsocketHandler extends TextWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(JsonWebsocketHandler.class); private static final Logger logger = LoggerFactory.getLogger(JsonWebsocketHandler.class);
protected final Channel channel; public final Channel channel;
protected final SessionsService sessionsService; protected final SessionsService sessionsService;
protected final Map<WebSocketSession, Player> sessionPlayers = new ConcurrentHashMap<>(); protected final Map<WebSocketSession, Player> sessionPlayers = new ConcurrentHashMap<>();

View file

@ -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("*");
}
}

View file

@ -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("*");
}
}

View file

@ -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("*");
}
}

View file

@ -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("*");
}
}