(목차) https://okane-on-cliff.tistory.com/257
1. 개관
이 프로젝트에 사용된 개념은 다음과 같다.
핵심만 따지자면 시그널링 서버, 클라이언트 1, 클라이언트 2 만 있으면 된다
(1) 먼저 1이 서버에게 2에게 자신을 소개시켜 달라고 한다(offer)
(2) 그리고 1은 이에 그치지 않고 자신과 연락하는 방법도 좀 전해달라고 한다.(setLocalDescription()으로 인해 트리거 되는 onicecandidate에서 server로 자신과의 연락방법을 2에게 전송)
(3) 이런 연락을 받은 2는 대답을 보냄(answer)
(4) 이 과정이 지나면 1과 2는 서로 자신이 누구고 상대가 누군지 또한 서로에 대한 연락방법 모두 알게 된다.
이제 각자 상대방이 주는 스트림을 자신의 브라우저에 띄우기만하면 되는 것
정리하자면
1. 1은 자신의 정보를 offer에 담아 server와 연결된 사람들에게 전달한다.
2. 2는 이 offer를 보고 remoteDescription에 offer를 담은뒤 자신의 정보를 answer에 담아 서버에 연결 된 사람에게 보낸다
3. 1은 offer를 보낸 후 이에 그치지 않고 local Description에 자신의 정보를 담는데 이는 onicecandidate를 트리거 시키고 candidate 정보를 server에 연결된 사람들에게 전달한다.
4. 2는 candidate정보를 받아 candidate pool에 저장한다(addIceCandidate). 즉 remote description과 remote description과 연결하는 방법(candidate)를 모두 알게 된다.
5. 2번 에서 던진 answer를 1이 받고 1은 answer을 remote description에 담는다.
6. 2번 에서 answer에 담은 정보는 당연 2의 local description에 저장하고 이는 1의 remote description의 candidate를 등록시킨다(addIceCandidate).
이로서 모든 연결이 완성되었고
addEventListener("addStream")을 통해 서로의 스트리밍 정보를 받아온다.
2. 구체적인 기술
시그널링 서버는 웹소켓을 통해 통신한다. 그래서 실시간으로 정보를 던지면 실시간으로 받을 수가 있다.
스턴 서버는 그냥 구글이 주는 것을 쓴다.
구체적인 구현방법은 코드를 보면 알 수 있다.