본문 바로가기
프로그래밍/WebRTC

[WebRTC] 1:N Peer To Peer 연결 구현

by YuminK 2023. 9. 16.

 

니꼴라스 선생님이 작성해준 1:1 Peer To Peer 예제 소스에서 크게 벗어나진 않는다. 

https://github.com/Yumin2019/WebRTC-P2P-Implement/tree/p2p-one-to-one

 

1:1 코드와 달라진 부분)

1:1 코드에서는 미리 PeerConnection을 생성하는 것이 가능했다. 왜냐면 Room에 들어올 인원이 2명으로 한정되어 있었기에 Id값이 없더라도 그냥 Room에 Socket 이벤트를 주는 방식으로 개발되어 있었기 때문이다. 

 

1:N의 방식에서는 새로운 유저가 들어온 시점에 Offer를 만드는 부분과 Answer을 만드는 시점(다른 클라이언트)에 각각 서로의 Id를 key로하는 PeerConnection을 만들어 주는 것이 핵심이다. 

 

1:N을 구현하는 순간부터 사실상 Room내부에 event를 막 날리다가는 SDP, ICE candidate 처리가 꼬일 수밖에 없다. 따라서 자신이 처리하는 이벤트를 누구한테 보낼 것인지 명확하게 지정해야 한다. 또한 PeerConnection을 만드는 시점에 등록해주는 콜백들이 누구와 통신하는지(Id)값을 가져야 하는 것이다. 

 

1:1 예제에서는 video 요소를 미리 추가했지만 이번에는 클라이언트 연결/종료에 따라 video element를 추가/삭제 하도록 처리했다. 

 

 

구현 소스)

https://github.com/Yumin2019/WebRTC-P2P-Implement/tree/p2p-one-to-many

 

참고자료

https://millo-l.github.io/WebRTC-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-1-N-P2P/

https://nomadcoders.co/noom

댓글