221231 항해99 55일차 websocket vs webrtc

요니링 컴터 공부즁·2023년 1월 9일
0
post-custom-banner

websocket, socket.io

websocket이란?

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

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

socket.io란?

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

websocket의 장단점

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

socket.io의 장단점

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

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


webrtc

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

websocket도 영상을 주고 받을 수 있는데 webrtc를 사용하는 이유

  • webrtc는 영상, 오디오, 임의의 데이터의 통신이 high-performance, hight-quality 이도록 설계됨
  • webrtc는 브라우저간 직접 통신이어서 훨씬 빠름
  • webrtc의 지연시간이 훨씬 짧다(low-latency)

webrtc도 websocket을 사용할까?

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

참조:
websocket vs webrtc 비교정리!

post-custom-banner

0개의 댓글