<aside> 🧺 웹소켓은 full-duplex 통신을 지원하는 프로토콜로, 일반 소켓 통신과는 다르게 bytes 스트림 대신 UTF8 포멧의 메시지 스트림을 사용한다.
</aside>
이전의 HTTP 통신과는 다르게 이중통신(full-duplex 통신) 즉 수신과 송신을 동시에 처리가 가능한 통신으로, socket connection을 유지하기 떄문에 양방향 통신, 데이터 전송이 가능하며, HTML5에 포함된 프로토콜이다.
웹소켓 연결은 HTTP프로토콜을 통해 이루어진다. HANDSHAKE과정이 성공적으로 끝나면 HTTP를 웹소켓 프로토콜로 바꾸는 protocol switching 과정이 진행된 후, 웹소켓을 위한 소켓을 이용하여 통신을한다.
통신은 텍스트와 바이너리가 있으며 모두 양방향 통신이 가능하다. 데이터의 구조는 텍스트 통신의 경우 UTF-8데이터를 포함하며, 시작 바이트가 0x00, 끝 바이트가 0xFF로 끝난다.
<aside> 💻 HTTP VS 웹소켓
</aside>