-
스프링 웹소켓 복습!엘리스트랙 2024. 4. 14. 15:34728x90
스프링 웹소켓(Spring WebSocket)은 스프링 프레임워크가 제공하는 웹소켓을 위한 모듈입니다. 웹소켓은 웹 애플리케이션에서 브라우저와 서버 간의 양방향 통신을 가능하게 하는 기술입니다. HTTP 연결과 달리, 웹소켓 연결은 연결이 맺어진 후에 계속 열려 있으므로, 실시간 통신이 필요한 애플리케이션(예: 채팅 앱, 실시간 게임, 실시간 트레이딩 시스템 등)에 적합합니다.
웹소켓 프로토콜
웹소켓 프로토콜은 "ws" (또는 보안 연결의 경우 "wss") 스키마를 사용하며, HTTP 프로토콜을 기반으로 초기 핸드셰이크를 수행한 뒤, 같은 연결을 통해 양방향 통신 채널을 제공합니다. 이 프로토콜은 브라우저와 웹 서버 간의 지속적인 연결을 유지하고, 메시지를 빠르게 교환할 수 있도록 합니다.
스프링 웹소켓의 특징
스프링 웹소켓은 다음과 같은 특징을 제공합니다:
- 양방향 통신: 클라이언트와 서버가 서로에게 실시간으로 데이터를 보낼 수 있습니다.
- STOMP 지원: Simple Text Oriented Messaging Protocol(STOMP)는 웹소켓 위에서 작동하는 메시징 프로토콜입니다. 스프링 웹소켓은 STOMP를 지원하여, 메시지 브로커를 통한 메시지 라우팅, 구독 및 방송 등의 기능을 쉽게 구현할 수 있습니다.
- SockJS 지원: SockJS는 웹소켓이 지원되지 않는 브라우저를 위한 대체 수단을 제공합니다. 이를 통해, 웹소켓 기능을 사용할 수 없는 환경에서도 유사한 기능을 구현할 수 있습니다.
- 보안: 스프링 시큐리티와의 통합을 통해 웹소켓 통신에도 보안을 적용할 수 있습니다.
스프링 웹소켓 사용하기
스프링 부트와 스프링 웹소켓을 사용하여 웹소켓 서버를 구현하는 과정은 다음과 같습니다:
- 의존성 추가: 스프링 부트 프로젝트에 spring-boot-starter-websocket 의존성을 추가합니다.
- 웹소켓 설정: WebSocketConfig 클래스를 생성하고, @EnableWebSocketMessageBroker 어노테이션을 사용하여 웹소켓 메시지 브로커를 활성화합니다. 이 클래스에서는 STOMP 엔드포인트와 메시지 브로커 옵션을 설정할 수 있습니다.
- 메시지 핸들러 구현: @MessageMapping 어노테이션을 사용하여 클라이언트로부터 메시지를 받을 엔드포인트를 정의하고, 메시지를 처리하는 로직을 구현합니다.
- 클라이언트 구현: 웹소켓 클라이언트는 주로 웹 브라우저에서 JavaScript를 사용하여 구현됩니다. 클라이언트는 서버와의 웹소켓 연결을 초기화하고, 메시지를 송수신할 수 있어야 합니다.
728x90'엘리스트랙' 카테고리의 다른 글
최종 프로젝트 배포! (1) 2024.04.21 최종 프로젝트 기획! (1) 2024.04.21 GraphQL 사용해보기! (0) 2024.04.14 GraphQL이란? (0) 2024.04.14 도커 파일과 컴포즈! (1) 2024.04.07