WebSocket vs Server Sent Event

Gunjoo Ahn·2022년 9월 7일
1

WebSocket

HTTP는 실시간으로 통신하는 것에 한계를 느낄 수 있는 프로토콜이다. 그래서 사람들은 한번의 TCP 연결을 한 이후에 실시간으로 통신을 하도록 새로운 프로토콜을 정의하였다. 바로 WebSocket이다.

WebSocket은 하나의 TCP 연결을 가지고 양방향 통신을 지원하는 프로토콜이다. HTML5 웹 표준 기술로 실시간을 지원하기 위해 나온 프로토콜인 만큼 빠르다. 이벤트를 단순히 듣고, 보내는 것만 가능하다.

Server Sent Event

서버에서 클라이언트로 푸시알림을 보내고 싶을 수가 있다. 이때 WebSocket을 이용할 수도 있지만 양방향 통신이 필요한 것이 아니기에 단방향 통신 방식을 생각해볼 수 있다. Server Sent Event (이하 SSE)가 단방향 통신이다.

HTML5 웹 표준 기술이며, HTTP를 그대로 이용한 방식이다. 다만 브라우저에 연결 개수 제한(6개)이 있어 탭을 여러개 띄우거나 하면 동작을 안할 수도 있다.

차이점

WebSocketSSE
브라우저 지원대부분 브라우저대부분 모던 브라우저
통신 방향양방향단방향
실시간 통신OO
데이터 형태Binary, UTF-8UTF-8
자동 재접속XO (3초마다 재시도)
최대 동시 접속 수브라우저 연결 한도는 없지만 서버 셋업에 따라 다름HTTP를 통해서 할 때는 브라우저당 6개 까지 가능 / HTTP2로는 100개가 기본
프로토콜websocketHTTP
전력 소모량작음
Firewall 친화적XO

Reference

https://www.peterkimzz.com/websocket-vs-socket-io/
https://blog.logrocket.com/server-sent-events-vs-websockets/
https://surviveasdev.tistory.com/entry/%EC%9B%B9%EC%86%8C%EC%BC%93-%EA%B3%BC-SSEServer-Sent-Event-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B3%A0-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0

profile
Backend Developer

1개의 댓글

comment-user-thumbnail
2023년 3월 3일

좋은 글 잘 읽고 갑니다.

답글 달기