웹소켓은 두 프로그램 간의 메시지 교환을 우한 통신 방법 중 하나로 웹소켓 연결을 맺기 위한 첫 번째 핸드셰이크를 주고 받은 후 지속적으로 연결이 유지되는 것이 특징이며, 매번 메시지 전송 시에 새롭게 연결을 맺을 필요가 없어 빠르고 효율적이다.
일정 주기를 가지고 서버의 API를 호출하는 방법.
실시간으로 데이터가 업데이트 되지 않는다는 단점이 있다.
불필요한 요청(request, connection)이 발생하며 따라서 불필요한 서버 부하가 발생한다.
다만 호환성이 좋다는 장점이 있다.
-> 이를 해결하기 위해서 sse(Server-Sent Event)
서버에서 웹브라우저로 데이터를 보내줄 수 있다.
웹브라우저에서 서버쪽으로 특정 이벤트를 구독함을 알려준다.
서버에서는 해당 이벤트가 발생하면 웹브라우쪽으로 이벤트를 보내준다.
다만 서버에서 웹브라우저로만 데이터 전송이 가능하고 그 반대는 불가능하다.
알람 같은 경우에 괜찮음
웹 소켓도 핸드 쉐이킹이 필요하고, Socket프로토콜이 아닌 HTTP또는 HTTPS프로토콜을 통해 이루어진다.
이렇게 위와같이 핸드 쉐이크가 완료되면 프로토콜이 ws로 변경된다
또는 wss와 같이 데이터 보안을 위해 SSL을 적용한 프로토콜로 변경된다
Message : 여러 frame이 모여서 구성하는 하나의 논리적 메시지 단위
Frame : communication에서 가장 작은 단위의 데이터, 작은 헤더 + payload로 구성
웹소켓 통신에 사용되는 데이터 : UTF8 인코딩
0x00 - 보내고 싶은 데이터 - 0xff 의 구성으로 데이터가 오간다