실시간 화상 연결 및 채팅 기능 (구현 코드)

https://github.com/Hanvp/makeZoom.git

WebRTC (Web Real-Time Communication)

이번 프로젝트는 WebRTC 중에서도 Peer-to-Peer 방식으로 구현해보았다. 즉, 영상/오디오/텍스트 등이 서버를 거치지 않고 바로 브라우저 ↔ 브라우저로 연결되어 Web ‘Real-Time’ Communication라는 이름에 걸맞게 속도가 매우 빠르다.

이는 이전에 사용한 WebSocket이나 Socket.io와는 달리 서버를 상대의 ip 주소, port, 방화벽 유무 등을 확인하는 signaling을 위해서만 사용한다. 다시 말해 브라우저는 서버에게 configuration / 위치만 전달하는 것이다.

❗Socket.io 작동 방식 : 브라우저 ➡️ 서버 ➡️ 브라우저

⛔ Peer-to-Peer의 단점

해당 구조는 Mesh Structure라고 불리는데, 연결 된 peer의 수 만큼 upload / download가 늘어나므로 peer가 적을 때만 사용해야 한다는 문제가 있다.

이와 반대되는 것으로는 SFU 방식이 있다. 중심 서버가 있어 브라우저는 한 번만 upload를 하게 된다. download는 연결된 브라우저의 수 만큼 하지만, 서버에서 전달하는 파일을 low quality로 변환시켜 비교적 부하가 낮다. 따라서, 해당 방식은 1:N인 스트리밍 방식에 적용하기 좋다.

//추가적으로 MCU 서버가 있다.

브라우저 간 서로를 연결하는 방법