WebSocket 과 WebRTC의 비교
소켓이란?
- 네트워크에서 소켓은, 클라이언트와 서버가 데이터를 송수신하기 위해 반드시 거쳐야 하는 연결부에 해당. (벽에 있는 콘센트와 유사)
- 대표적으로 TCP, UDP 프로토콜을 사용하는 2가지 소켓 존재
- TCP 프로토콜은 메시지를 보내고 수신했는지를 확인하는 절차가 존재하여, 일반적으로 안정적인 데이터 송수신을 위해 사용.
- UDP 프로토콜은 일부 패킷이 손실되어도 괜찮거나, 빠른 전송 속도가 필요한 경우 사용.
- 패킷이라는 단위로 통신하며, 패킷은 소켓을 통해 송수신하는 데이터 덩어리 하나를 의미함.
WebSocket?
- 서버와 클라이언트가 실시간으로 양방향 통신을 할 수 있게 해주는 Socket
- 일부 브라우저들은 웹소켓을 지원하지 않으므로, 모든 브라우저에서의 동작을 보장하진 않음
- 2022년 2월 현재는 일부 구버전 브라우저를 제외하고 모두 지원한다고 볼 수 있다.
socket.io?
- 웹소켓을 사용할 수 없는 브라우저인 경우, 일정 간격마다 데이터를 받아오는
HTTP polling
을 사용해 실시간 통신 기능을 구현하게끔 해주는 자바스크립트 라이브러리.
- socket.io !== WebSocket
WebRTC
Web Real-Time Communication의 약자로, 브라우저끼리 통신하여 중간자인 서버 없이 브라우저 간에 P2P 형태로 오디오, 영상, 데이터를 교환할 수 있게 하는 기술이다.
WebSocket과 대비되는 점은 아래와 같다.
- WebRTC는 영상, 오디오, 데이터 통신이 고성능, 고품질이도록 설계되었다.
- WebRTC는 브라우저간 직접 통신이므로, 훨씬 전송 속도가 빠름
- WebRTC는 네트워크 지연시간이 짧다.(Latency)
다만, WebRTC만으로 제어하기 어려운 부분이 있으므로 WebSocket, 또는 Socket.io 를 사용해 신호를 주고받을 수 있는 Signaling 서버는 필요하다.
현재 Zoom, Google Meet, 매일 쓰고있는 Gather.town 에서도 이 WebRTC를 이용하여 화상회의 기능을 구현하였다.
더 알아볼만 한 것들
RTMP
: TCP 기반의 영상 스트리밍 프로토콜
참고 URL
동영상 - WebRTC? WebSockets? 5분 개념정리!
Websocket과 WebRTC
WebRTC의 특징
WebSocket과 Socket.io - 2011.12.22
Can I use ___ ?
Twitch Engineering: An Introduction and Overview
Video streaming protocols explained: RTMP, WebRTC, FTL, SRT
라이브 비디오 서비스 구축을 위한 노하우 - 2편