팀프로젝트

WebSocket을 이용한 양방향 통신으로 채팅 구현

KimMZ 2025. 4. 8. 00:56
WebSocket 이란?
클라이언트와 서버 간의 단일 TCP 연결을 통해 양방향 실시간 통신이 가능하게 하는 통신 프로토콜.
클라이언트 또는 서버 중 하나가 연결을 중단하기 전까지 통신이 지속됨

 

  • 기술 채택 이유 → 실시간 처리를 요구하는 시스템에서 WebSocket을 이용하여 해결 가능
    • 일반적으로 서버 통신은 HTTP를 통해 이뤄짐 → 서버로 요청이 와야지만 응답을 줄 수 있음
    • 채팅 또는 금융 데이터, 주식 가격 등 실시간 변동성이 있는 데이터를 클라이언트가 확인하기 위해서 계속 HTTP 요청을 보내고 받아야함 → 동일한 요청을 매번 보내는 게 매우 비효율적임
  WebSocket HTTP
방식 1번 연결 이후 연결 중단 전까지 자유롭게 메시지 전송 방식, 양방향 통신 클라이언트 요청을 보내야 응답하는 방식, 단방향 통신
연결 상태 연결성 비연결성

 

  • WebSocket 연결 과정
    1. handshaker : HTTP 요청/응답으로 WebSocket 연결 설정
      - 클라이언트가 서버 측으로 WebSocket 연결을 요청(HTTP 헤더에 Upgrade와 Connection 필드를 포함하여 WebSocket으로 업그레이드 요청)
      - 서버 HTTP 상태코드 101(Switching Protocols) 응답을 받아 연결 확인
    2. 연결 유지 : 양방향 데이터 전송
      - 연결 이후에는 서버는 클라어언트 요청 없이도 데이터 전송 및 응답 가능
      - 클라이언트는 서버로 데이터 전송 가능(데이터는 프레임 단위 전송)
      - TCP의 Keep-Alive 기능으로 장시간 연결 상태 유지 가능
    3. 프레임 기반 데이터 전송 : 텍스트 또는 바이너리 데이터 실시간 송수신 가능
      - 텍스트 메시지 전송 시, 이벤트 기반 통신으로 데이터 처리됨
    4. 연결 종료 : 클라이언트 또는 서버에서 연결을 끊고 종료