SpringBoot 를 배워보자/6. 웹 개발

웹 소켓

_Blue_Sky_ 2024. 9. 29. 16:00
728x90
728x90

스프링 부트 웹 소켓: 실시간 웹 애플리케이션 개발의 핵심

소개

스프링 부트는 웹 개발을 간소화하고 생산성을 높여주는 강력한 프레임워크입니다. 여기에 웹 소켓을 더하면 실시간 데이터 전송이 필요한 채팅, 게임, 주식 시세 업데이트 등 다양한 웹 애플리케이션을 구현할 수 있습니다.

웹 소켓이란?

웹 소켓은 서버와 클라이언트 간의 양방향 통신을 가능하게 하는 프로토콜입니다. 기존의 HTTP 프로토콜이 요청-응답 방식으로 동작하는 것과 달리, 웹 소켓은 연결을 유지한 상태에서 서버와 클라이언트가 실시간으로 메시지를 주고받을 수 있습니다. 이를 통해 웹 애플리케이션에 실시간성을 부여할 수 있습니다.

스프링 부트에서 웹 소켓 사용하기

스프링 부트는 spring-websocket 모듈을 제공하여 웹 소켓 기능을 손쉽게 사용할 수 있도록 지원합니다.

1. 의존성 추가:

Groovy
implementation 'org.springframework.boot:spring-boot-starter-websocket'
 
728x90

2. WebSocketConfig 클래스 생성:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MyWebSocketHandler(), "/myWebSocket");
    }
}
 
  • @EnableWebSocket: 웹 소켓 기능을 활성화합니다.
  • WebSocketConfigurer: 웹 소켓 핸들러를 등록하기 위한 인터페이스입니다.
  • registerWebSocketHandlers: 웹 소켓 핸들러를 등록하는 메소드입니다.

3. WebSocketHandler 구현:

public class MyWebSocketHandler implements WebSocketHandler {

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 클라이언트 연결 시 호출되는 메소드
        System.out.println("Client connected: " + session.getId());
    }

    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        // 클라이언트로부터 메시지를 받았을 때 호출되는 메소드
        String payload = (String) message.getPayload();
        // 메시지 처리 로직
        session.sendMessage(new TextMessage("Hello from server!"));
    }

    // ... 나머지 메소드들
}
 
  • afterConnectionEstablished: 클라이언트가 연결될 때 호출되어 초기화 작업을 수행합니다.
  • handleMessage: 클라이언트로부터 메시지를 받았을 때 호출되어 메시지를 처리합니다.
  • sendMessage: 클라이언트에게 메시지를 전송합니다.

4. 클라이언트에서 연결:

JavaScript에서 WebSocket API를 사용하여 서버에 연결하고 메시지를 주고받을 수 있습니다.

var socket = new WebSocket("ws://localhost:8080/myWebSocket");

socket.onopen = function(event) {
    console.log("Connected to server");
    socket.send("Hello from client!");
};

socket.onmessage = function(event) {
    console.log("Message from server: " + event.data);
};
 

웹 소켓 활용 사례

  • 채팅: 실시간 채팅 기능 구현
  • 게임: 게임 서버와 클라이언트 간의 실시간 통신
  • 주식 시세: 실시간 주식 시세 업데이트
  • IoT: IoT 기기와의 실시간 데이터 교환
  • 협업 도구: 실시간 협업 기능 구현

스프링 부트 웹 소켓의 장점

  • 간편한 설정: 스프링 부트의 자동 설정 기능을 통해 간단하게 웹 소켓 환경을 구축할 수 있습니다.
  • 강력한 기능: 스프령 프레임워크의 다양한 기능을 활용하여 복잡한 웹 소켓 애플리케이션을 개발할 수 있습니다.
  • 확장성: 커스텀 프로토콜, STOMP 등 다양한 프로토콜을 사용할 수 있습니다.

결론

스프링 부트 웹 소켓은 실시간 웹 애플리케이션 개발에 필수적인 기술입니다. 스프링 부트의 강력한 기능과 웹 소켓의 실시간 통신 기능을 결합하여 다양하고 흥미로운 웹 애플리케이션을 개발할 수 있습니다.

 

728x90
728x90

'SpringBoot 를 배워보자 > 6. 웹 개발' 카테고리의 다른 글

웹 템플릿 엔진  (0) 2024.09.29
HTML, Thymeleaf 등을 이용한 웹 페이지 개발  (0) 2024.09.29
RESTful API 개발  (0) 2024.09.29