호스트 한명이 혼자서 송신하고
나머지 접속자들은 전부 수신만 하는 1:N 연결을 구현하는게 목표인데
시스템은 구현을 해놨음. 새로운 게스트가 올때마다 Offer&Answer로 연결하도록.. 그리고 Candidate는 발생한 이벤트의 ufrag를 기준으로 식별해서 한명한테만 전달되게 해놨음.
근데 문제는
게스트가 한명인 1:1 통신일때는 연결이 잘 되는데
게스트가 한명 더 접속하면 그때는 잘 되던 첫번째 게스트의 스트림이 멈춤.
그렇다고 새로 온 게스트가 재생 잘 되는 것도 아님. 얘도 안 됨.
connectionState는
Host: Connecting
Guest 1: Connected
Guest 2: Connecting
일케 돼있음. 정상적으로는 전부 Connected가 되어야함..
내가 하는게 맞는 방법인지도 모르겠고 문제가 뭐 땜인지도 모르겠음.. 헤딩이라 모르는거 천지라서 죽을 맛임.
현재로서 내가 생각하는 가설&방법은
1. (가정) WebRTC에서 1:N 통신이라는 전제 자체가 잘못됐다. WebRTC는 무조건 N:N 통신이어야만 하므로 (해결책) N:N으로 구현해야한다. (문제점) 근데 어케하는지 모른다. 그리고 아무런 통신도 없는 게스트끼리 굳이 연결해야하나.
2. (가정) 위와 동일 (해결책) 호스트는 한명의 게스트마다 RTCPeerConnection을 새로 생성해서 각자 따로 연결해줘야 한다.
3. (가정) 내가 뭔가 구현에 실수를 했다. (해결책) 다시 한번 짜보자 (일주일동안 똑같은거 3번 짰는데 그대로임 씨발)
뭐 이정도가 있음
네트워크나 메모리 부하 문제가 없다면 지금으로선 2번도 해볼만한 선택 같음..
혹시 이쪽 관련으로 해본적 있으신 분들은 도움좀 주시면 감사할거같음
ufrag는 ice-ufrag 말한거임
2번으로 해서 해결했어요 ㅇㅅㅇ
노노 아시는구나
webrtc 존나 복잡하구나 머부터 공부해야대냐 ㅇㅅㅇ
WebRTC의 원리만 공부하면 댈듯 ... 온라인으로 서비스할거면 서버 쫌만 하면 될듯 나는 시그널링서버로 socket.io 사용함
존나 비효율적이네
방법알면제발공유점
RTCPeerConnection은 원래 한개당 사용자 하나임 안됨 1:N 지원하는 webRTC 라이브러리 봐도 다 RTCPeerConnetion 여러개 생성해
찾아보면 RTCPeerConnection Attribute에 MediaStreamTrack이있고 여기에 Video나 Audio Track 담아서 전달해주잖아 근데 MediaStreamTrack MDN 설명 보면 "단일 미디어 트랙"이라고 되어잇음
https://github.com/SnowyPainter/2Facies-Client/tree/master/2Facies%2FRTC
- dc App