[SPRING]웹소켓이란?

CHOI IN HO·2024년 1월 2일
0

SPRING

목록 보기
35/45
post-thumbnail

📌웹소켓

웹소켓은 두 프로그램 간의 메시지 교환을 우한 통신 방법 중 하나로 웹소켓 연결을 맺기 위한 첫 번째 핸드셰이크를 주고 받은 후 지속적으로 연결이 유지되는 것이 특징이며, 매번 메시지 전송 시에 새롭게 연결을 맺을 필요가 없어 빠르고 효율적이다.

  • 현재 인터넷 환경(HTML5)에서 많이 사용
  • 웹 소켓을 지원하는 브라우저의 경우 웹 소켓 프로토콜을 지원
  • W3C와 IETF에 의해 자리잡은 표준 프로토콜 중 하나

📌특징

1. 양방향 통신

  • 데이터 송수신을 동시에 처리할 수 있는 통신 방법
  • 클라이언트와 서버가 서로에게 원할 떄 테이터를 주고 받는다.
  • 통상적인 Http통신은 Client가 요청을 보내는 경우에만 Server가 응답을 하는 단방향 통신

2. 실시간 네트워킹

  • 웹 환경에서 연속된 데이터를 빠르게 노출
  • ex) 채팅, 주식, 비디오 데이터

📌이전의 비슷한 기술

Polling (대규모에는 적합하지 않다)

일정 주기를 가지고 서버의 API를 호출하는 방법.
실시간으로 데이터가 업데이트 되지 않는다는 단점이 있다.
불필요한 요청(request, connection)이 발생하며 따라서 불필요한 서버 부하가 발생한다.
다만 호환성이 좋다는 장점이 있다.

-> 이를 해결하기 위해서 sse(Server-Sent Event)

SSE

서버에서 웹브라우저로 데이터를 보내줄 수 있다.
웹브라우저에서 서버쪽으로 특정 이벤트를 구독함을 알려준다.
서버에서는 해당 이벤트가 발생하면 웹브라우쪽으로 이벤트를 보내준다.
다만 서버에서 웹브라우저로만 데이터 전송이 가능하고 그 반대는 불가능하다.
알람 같은 경우에 괜찮음

📌동작방법

웹 소켓도 핸드 쉐이킹이 필요하고, Socket프로토콜이 아닌 HTTP또는 HTTPS프로토콜을 통해 이루어진다.

이렇게 위와같이 핸드 쉐이크가 완료되면 프로토콜이 ws로 변경된다
또는 wss와 같이 데이터 보안을 위해 SSL을 적용한 프로토콜로 변경된다

Message : 여러 frame이 모여서 구성하는 하나의 논리적 메시지 단위
Frame : communication에서 가장 작은 단위의 데이터, 작은 헤더 + payload로 구성
웹소켓 통신에 사용되는 데이터 : UTF8 인코딩
0x00 - 보내고 싶은 데이터 - 0xff 의 구성으로 데이터가 오간다

웹 소켓 프로토콜 특징

  • 최초 접속시에만 http프로토콜 위에서 handshaking을 하기 때문에 http header를 사용한다
  • 웹소켓을 위한 별도의 포트는 없고, 기존 포트를 사용한다
  • 프레임으로 구성된 메시지라는 논리적 단위로 송수신 한다
  • 메시지에 포함될 수 있는 교환 가능한 메시지는 텍스트와 바이너리 뿐이다
profile
개발자기 되기 위해선 무엇이든!

0개의 댓글