HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏗️
Tech Store
/
🎡
웹 소켓
🎡

웹 소켓

담당자들
카테고리
주제
나의 블로그
완료율%
프로젝트
최종 프로젝트
상태
작성중

웹 소켓

implementation 'org.springframework.boot:spring-boot-starter-websocket'
간단하게 구성하는 SpringBoot Websokcet server(스프링부트 웹소켓 서버)
스프링부트에서 웹소켓 서버 환경을 구성하는 아주 간단하고 빠른 방법 입니다. 프로젝트 자체가 당연히 웹 서버 기반으로 기초 환경구성이 되어야 하겠습니다. * gradle 기준 implementation 'org.springframework.boot:spring-boot-starter-websocket' * mavne 기준 org.springframework.boot spring-boot-starter-websocket 첫번째 단계로는 어떠한 요청에 대해서 서버가 응답할지를 결정하는 설정파일 을 작성하는 것 입니다. WebSocketConfigurer 인터페이스를 상속받는 설정 클래스를 만들어 줍니다.
https://lts0606.tistory.com/569
간단하게 구성하는 SpringBoot Websokcet server(스프링부트 웹소켓 서버)
Spring Boot WebSocket (1) - 웹소켓 이해하기 _ 채팅 구현
동일한 방을 구독하고 있는 팀원들에 대해서 아이템 구매 상황과 스펠 체크 상황의 실시간 공유 를 해야하는데 이를 위해서 WebSocket을 사용하기로 했다. 스프링 웹 애플리케이션이므로 SockJS + STOMP를 이용해서 웹소켓을 구현. 프론트쪽과 SockJS로 연결을 하게 된다. 복수의 방들이 생성될 수 있으므로 여러개의 통신을 위한 방들이 생성되어야 한다. 각 방들의 엔드포인트는 [matchId + 진영 코드]로 한다.
Spring Boot WebSocket (1) - 웹소켓 이해하기 _ 채팅 구현
https://ws-pace.tistory.com/105
Spring Boot WebSocket (1) - 웹소켓 이해하기 _ 채팅 구현
Sup2's blog-Spring Boot에서 WebSocket 사용하기 #1
Sup2's blog-Spring Boot에서 WebSocket 사용하기 #1
https://sup2is.github.io/2019/06/05/websocket-1.html
Sup2's blog-Spring Boot에서 WebSocket 사용하기 #1
HTTP 통신은 클라이언트에서 서버로 요청을 보내고, 서버가 요청에 응답하는 방식으로 클라이언트의 요청이 있을 때만 서버가 응답하는 '단방향' 통신
Socket 통신은 두 프로그램이 서로 데이터를 주고 받을 수 있는 양쪽 프로그램 모두에 생성되는 통신 단자를 사용하는 '양방향' 통신, 전이중 방식
채팅이나 주식, 게임처럼 실시간으로 데이터를 주고 받는 경우 Connection을 자주 맺고 끊는 HTTP 통신보다 Socket 통신이 더 적합합니다. 결국 Connection의 유지 여부가 웹소켓(WebSocket) 사용을 결정하는 가장 중요한 요인이 됩니다.
단점으로는 Connection이 유지되는 동안 항상 통신을 하는 것은 아니기 때문에 Connection의 낭비가 발생
최초 접속이 일반 http 요청을 이용한 hanshaking으로 이뤄지고 헤더 정보를 보내게 된다.
⇒ http의 경우 매번 헤더 정보를 보내기 때문에 웹 소켓은 네트워크 비용을 중리 수 있다.
CORS 사용이 가능하다.
handshake 과정이 성공적으로 이루어지면 HTTP → 웹 소켓 프로토콜로 변경하는 프로토콜 스위칭이 이뤄진다. 소켓에는 ws, wss 가 있다.

STOMP ?

TextWebSocketHandler

  • 소켓 통신은 기본적으로 서버와 클라이언트간에 1:N 관계
    • 한 서버에 여러 클라이언트가 접속할 수 있으므로 서버는 여러 클라이언트가 발송한 메시지를 받아서 처리해줄 Handler가 필요
    • 이 Handler를 TextWebSocketHandler로 만든다.
 

WebSocketConfigurer

  • Handler를 이용하여 WebSocket을 활성화 하기위한 Config 파일
    • @EnableWebSocket 을 선언하여 WebSocket을 활성화
    • WebSocket에 접속하기 위한 endpoint는 “/ws/chat” 으로 설정하고 도메인이 다른 서버에서도 접속 가능하도록 CORS : setAllowedORigins(”*”) 를 설정에 추가해준다.
 

WebSocketMessageBrokerConfigurer

  • STOMP 를 사용하기 위한 ~
  • @Configuration이 선언된 클래스에 추가하면 broker기반의 high-level(STOMP인듯?) WebSocket Messaging을 구현할 수 있다.