[WebSocket] 오늘의 테크용어 : 웹소켓이 뭐나면

최대 1 분 소요

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2024-10-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_3 58 07

오늘의 테크용어 : 웹소켓이 뭐냐면

HTTP 통신

http 요청 : 서버와 유저가 데이터를 주고 받기 위해 요청

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2024-10-14_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_4 17 09

전통적인 http 통신의 한계

  • 실시간 게임, 실시간 채팅, 실시간 코인 거래소
  • 코인 거래소의 경우
    • 실시간으로 코인 가격을 보여줘야 함
    • 2초마다 서버에 있던 코인 가격을 가져와야 함
    • → 2초마다 서버에 http 요청
    • ⇒ 비효율적 (2초마다 요청을 보내야 하는 것)
    • 서버가 알아서 2초마다 데이터를 보내주자

해결방법

  1. Server-Sent Event
    • http 통신을 종료안하고 계속 유지

    단점

    • 서버만 일방적으로 메시지를 보낼 수 있다.
    • 유저는 지속적인 데이터 수신만 가능
  2. WebSocket
    • TCP 연결 기반으로 서버랑 유저간 양방향 통신 가능
    • 연결법
      1. 유저 → 서버 : http 요청 (웹소켓으로 통신하자)
      2. 서버 : 허락
      3. http 요청을 웹소켓으로 업그레이드 할 수 있음
      4. 양방향 웹소켓 통신 시작

socket.io 라이브러리

  • 연결 끊기면 자동 재접속 기능
  • 웹소켓 접속자마다 자동 id 부여
  • 모든 웹소켓유저에게 전체 메시지 전송가능
  • 웹소켓방을 생성 가능
  • socket.io는 Node.js용 서버 사이드 라이브러리.
  • 자바 스프링으로 쓰기 위해서 netty-socket.io 를 사용한다!

카테고리:

업데이트: