[스프링] 스프링 WebSocket과 사용자 상태 관리

이번에는 스프링(Spring)을 사용하여 WebSocket을 구현하고, 사용자 상태를 관리하는 방법에 대해 알아보겠습니다.

스프링 WebSocket 설정

먼저, 스프링에서 WebSocket을 설정하는 방법에 대해 살펴보겠습니다.

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/app");
    }
}

위의 코드는 WebSocketConfig 클래스에서 WebSocketMessageBrokerConfigurer 인터페이스를 구현한 예시입니다.

사용자 상태 관리

사용자의 상태를 관리하기 위해서는 세션(session)을 활용할 수 있습니다.

@Component
public class UserSessionRegistry {
    private Map<String, String> userSessions = new ConcurrentHashMap<>();

    public void registerSession(String username, String sessionId) {
        userSessions.put(username, sessionId);
    }

    public void removeSession(String username) {
        userSessions.remove(username);
    }

    public String getSessionId(String username) {
        return userSessions.get(username);
    }
}

위의 코드는 UserSessionRegistry 클래스를 사용하여 사용자별 세션 정보를 관리하는 예시입니다.

이제, WebSocket으로 메시지를 주고받는 동안 사용자의 상태를 관리할 수 있게 되었습니다.

위 내용은 스프링 WebSocket을 통해 사용자 상태를 관리하는 방법에 대한 간단한 예시입니다.

더 자세한 내용은 공식 스프링 문서를 참고하세요.