hmk run dev

websocket 웹소켓이란? 본문

카테고리 없음

websocket 웹소켓이란?

hmk run dev 2022. 3. 21. 20:57

웹소켓이란 간단하게 말해 두 프로그램 간에 메시지를 교환하기 위한 통신방법 중 하나!

양방향 통신 

- 데이터 송수신을 동시에 처리할 수 있는 통신 방법

- 클라이언트와 서버가 서로에게 원할 때 데이터를 주고받을 수 있다.

- http 통신은 클라이언트가 서버에 요청을 보내는 경우에만 server가 응답하는 단방향 통신 

 

 

실시간 네트워킹

- 웹화면에서 연속된 데이터를 빠르게 노출

- 채팅, 주식, 비디오 데이터 등...

- 여러 단말기 데이터를 빠르게 교환

 

 

동작방법

 

핸드쉐이킹

- http, https 프로토콜을 통해 이뤄진다. get 메서드 사용

- upgrade 헤더 : 현재 클라이언트, 서벗 전송 프로토콜을 연결해 다른 프로토콜로 업그레이드

- 정상적으로 업그레이드가 되면 프로토콜이 ws로 변경됨

 

데이터 통신

- massage단위 사용 : frame이 모여서 구성되는 하나의 논리적 메시지 단위

- frame : communication에서 가장 작은 단위의 데이터 작은 헤더와 payload로 구성

- close frame을 주고 받으며 연결 종료

 

간단한 요약

1. 브라우저가 서버에게 websocket을 사용할 수 있는지 매직키와 함께 묻는다.

2. 연결 시작

3. close frame을 주고받으며 연결 종료

 

특징

- 최초 접속에서만 http 프로토콜 위에서 handshaking을 하기 때문에 http header를 사용

- 별도의 포트는 없으며, 기존 포트(http-80, https-443 사용)

- 프레임으로 구성된 메시지라는 논리적 단위로 송수신

- 메시지에 포함될 수 있는 가능한 메시지는 텍스트와 바이너리 형식뿐

- 문자열을 구고 받을 수 있게 해 줄 뿐 그 이상의 일은 하지 않는다.

 

웹소켓 방식은 서브 프로콜을 사용함 주고 받는 메세지 형태를 약속해 해석을 용이하게함

서브 프로토콜로 주로 사용되는 프로토콜은 STOMP입니다.

 

STOMP(Simple Text Message Protocol)

- STOMP는 채팅 통신을 하기 위한 형식을 정의

- HTTP와 유사하게 간단히 정의되어 해석하기 편한 프로토콜

- 프레임기반의 프로토콜 명령, 헤더, 바디로 구성됨

- 헤더와 바디는 빈 라인으로 구분, 바디의 끝은 NULL 문자로 설정

Comments