websocket vs webrtc 비교정리!

메모하는 개발자·2021년 12월 5일
6

(1) websocket, socket.io

websocket은 무엇일까?
브라우저의 화면을 바꾸기위해서는 보통 새로고침을 해야한다.
새로고침 없이 화면을 바꾸기위해서는 어떻게 해야할까?
이때 사용하는것이 바로 websocket이다!

페이지 이동없이 페이지 내부만 새로고침하는 Ajax라는 기술도있지만 Ajax도 결국 HTTP를 이용하기 때문에 요청을 보내야 응답이 온다.
새로고침을 위해 버튼을 누른다거나 주기적으로 요청을 보낸다면 번거로울 뿐더러 자원 낭비를 하게된다.

즉, websocket은 서버와 클라이언트가 실시간으로 양방향 통신을 할 수 있게 해주는 프로토콜이다.

그렇다면 socket.io는 무엇일까?

websocket은 양방향 소통을 위한 프로토콜이라면 socket.io는 양방햔 통신을 하기위해 웹소켓 프로토콜을 사용하는 라이브러리이다.

그래서 둘중에 어떤걸 써야할까?
websocket과 socket.io 각각의 장점과 특성을 보고 상황에 맞게 써야한다.

socket.io 장단점.

  • 장점: 새로운 사람이 채팅방에 들어왔음을 연결된 모든 사용자들에게 한번에 알려야하는 경우
    socket.io는 연결된 모든 클라이언트에 메세지를 브로드캐스팅 할 수 있지만
    websocket은 연결된 사용자들의 리스트를 받아와서 한명씩 메시지를 보내야한다.
    또한, 소켓 연결 실패 시 socket.io는 fallback을 통해 다른 방식으로 알아서 reconnect하지만 websocket은 reconnect를 시도하지 않는다.
  • 단점 : 많은 비용, 자원, boilerplate코드

websocket 장단점.

  • 장점 : 적은비용, 낮은 복잡도, 빠름
  • 단점 : 지원하지 않는 브라우저가 다수 존재

요약하면, 빠르게 적은 비용으로 많은 데이터를 처리하는 경우에는 websocket을 사용하고
연결된 클라이언트들을 세밀하게 처리하고 Broadcasting 기능이 필요한경우에는 socket.io를 쓰는게 좋을거같다.

(2) webrtc

WebRTC(Web Real-Time Communication)은 쉽게 말해 브라우저와 서버가 통신하는게 아니라 브라우저끼리 통신하여 중간자인 서버없이 브라우저 간에 오디오, 영상 미디어, 데이터등을 교환할 수 있도록 하는 기술이다.

websocket도 영상을 주고받을수있는데 왜 webrtc를 사용할까?

1. webrtc는 영상, 오디오, 임의의 데이터의 통신이 high-performance, hight-quality 이도록 설계되었기 때문!
2. webrtc는 브라우저간 직접 통신이어서 훨씬 빠르다!
3. webrtc의 지연시간이 훨씬 짧다(low-latency)

webrtc도 websocket을 사용할까?

사용한다!
P2P 연결을통해 직접 통신하지만 심각한 부하를 다룰 수 있기 때문에 websocket 혹은 socket.io를 사용하여 Signaling서버는 필요함.

결론

1. webrtc가 websocket보다 훨씬 고성능이며 빠르다.
2. webrtc의 signal channel로 websocket이 쓰인다

참고
https://www.peterkimzz.com/websocket-vs-socket-io/
https://www.youtube.com/watch?v=5EhsjtBE7I4

0개의 댓글