Spring Websocket - 1. 기본 웹소켓 서버 구축

박병주·2023년 8월 1일
0

Spring

목록 보기
6/6

Websocket

Websocket은 기존의 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜.
접속까지는 HTTP프로토콜을 이용하고 그 이후의 통신은 자체적인 Websocket 프로토콜로 통신하게 된다.

의존성 추가

  • spring-boot-starter-web
  • spring-boot-starter-websocket
  • lombok
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

핸들러 작성

socket통신은 서버와 클라이언트가 1:N으로 관계를 맺는다. 따라서 한 서버에 여러 클라이언트가 접속할 수 있으며, 서버에는 여러 클라이언트가 발송한 메시지를 받아 처리해줄 Handler의 작성이 필요하다.
다음 핸들러는 TextWebSocketHandler를 상속받아서 작성하고, Client로부터 받은 메시지를 Console log에 출력하고 Client로 환영 메시지를 보내는 역할을 한다.

@Component
public class WebSocketHandler extends TextWebSocketHandler{

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception{
        String payload = message.getPayload();
        TextMessage textMessage = new TextMessage("Welcome chatting server");
        session.sendMessage(textMessage);
    }
    
}

웹소켓 설정

위에서 만든 handler를 이용하여 Websocket을 활성화하기 위한 Config파일을 작성한다.
@EnableWebSocket을 선언하여 WebSocket을 활성화 하고, WebSocket을 접속하기 위한 endpoint 주소를 작성한다. 도메인이 다른 서버에서도 접속 가능 하도록 CORS : setAllowedOrigins("*") 설정을 추가.

@Configuration
@RequiredArgsConstructor
@EnableWebSocket 
public class WebSocketConfiguration implements WebSocketConfigurer {

    private final WebSocketHandler webSocketHandler;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(webSocketHandler, "/ws/chat")
        .setAllowedOrigins("*");
    }
}

Simple Web Socket Client

WebSocket 테스트를 위한 클라이언트 웹 화면 구성이 아직이기때문에 Chrome 웹 스토어에 Simple Websocket Client를 검색해 설치한다.

profile
응애

1개의 댓글

comment-user-thumbnail
2023년 8월 1일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기