API

WebSocketHandler - 오버라이드 메소드, override method 정리

letsDoDev 2024. 9. 16. 18:21
import org.springframework.web.socket.*;
import org.springframework.web.socket.handler.TextWebSocketHandler;

public class CustomWebSocketHandler extends TextWebSocketHandler {

    // WebSocket 연결이 성립되었을 때 호출되는 메서드
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 새로운 WebSocket 연결이 성립되었을 때 실행되는 로직을 여기에 작성
        System.out.println("웹소켓 연결됨: " + session.getId());
    }

    // 클라이언트로부터 텍스트 메시지를 받았을 때 호출되는 메서드
    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 클라이언트가 전송한 메시지를 처리하는 로직을 여기에 작성
        String payload = message.getPayload();
        System.out.println("메시지 수신: " + payload);
        // 받은 메시지를 다시 해당 클라이언트에게 전송 (Echo 기능)
        session.sendMessage(new TextMessage("Echo: " + payload));
    }

    // 웹소켓 연결이 예외로 인해 끊어졌을 때 호출되는 메서드
    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        // 예외 발생 시 처리할 로직을 여기에 작성
        System.out.println("전송 오류 발생: " + exception.getMessage());
        session.close(CloseStatus.SERVER_ERROR); // 서버 측에서 연결 종료
    }

    // WebSocket 연결이 종료되었을 때 호출되는 메서드
    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        // 연결이 정상적으로 또는 예기치 않게 종료되었을 때 실행되는 로직을 여기에 작성
        System.out.println("웹소켓 연결 종료됨: " + session.getId() + " 상태: " + status);
    }

    // WebSocket 핸들러가 바이너리 메시지나 텍스트 메시지를 처리할 수 있는지 여부를 반환
    @Override
    public boolean supportsPartialMessages() {
        // 부분 메시지를 지원하는지 여부를 반환 (기본적으로 false로 설정)
        return false;
    }
}