WebSocket은 기존의 HTTP의 stateless한 통신과 다르게 연결이 유지되는 성질이 있으며, 최근에는 브라우저에서도 지원이 된다. https://developer.mozilla.org/ko/docs/Web/API/WebSocket아직 실험적인 부분이
브라우저와 실시간 통신을 위해 socket.io 세팅을 한다.=> express의 서버에 socket.io를 합친다. 그리고 관리를 위한 admin-ui도 추가한다.=> express에서 전달한 socket.io.js를 읽는다.=> socket.io.js를 읽었기 때문
각 소켓 (각각의 브라우저나 세션이 만드는 커넥션)은 Socket.io에서 제공하는 Room에 접속할 수 있다.
=> emit은 기존 WebSocket에 send와 유사하게 커넥션이 일어나고 나서 발생시키는 함수이다. 여러가지 인자를 보낼 수 있으며, 마지막 함수는 백엔드에서 실행시점을 정할 수 있는 함수이고 파라미터도 받아올 수 있다.=> 커넥션이 발생하고 emit을 받은 후,
=> 지금의 예제 코드는, 인메모리 방식으로 모든 커넥션이 하나의 서버에 저장된 방식이다. 하지만 규모가 커짐에 따라 여러 서버가 생기게 된다면, 여러 서버가 하나의 DB를 보게 만들고 결국 adapter를 통해 일관성을 유지해야 한다.=> 사실 소켓 (커넥션)도 si
=> join_room: 초기 유저가 진입시 서버에 소켓 연결을 시작하고 클라이언트에서 영상 및 음향에 대한 정보를 세팅한다.welcome: 클라이언트에 webRTC 커넥션을 만들고 로컬 정보를 만든 다음, 해당방의 소켓에 webRTC에 연결을 전달한다.연결된 요소를
=> https://developer.mozilla.org/ko/docs/Web/API/RTCPeerConnection/createAnsweroffer를 통해 브라우저에 필요한 설정값을 받은 후에, 다시 answer로 통해 응답한다. 응답 내용은 원 offer
=> sender는 우리의 peer에 연결된 media stream을 컨트롤 할 수 있다. 위의 코드는 카메라를 변경했을 경우에, peer의 media track을 변경하는 코드이다.https://developer.mozilla.org/en-US/docs/We
=> 스턴 서버는 다른 네트워크 간에 ip Gateway를 통해 ip를 서로 바라보게 할 수 있도록 하는 서버이다. WebRTC를 주력으로 하는 서비스이면 별도로 구축할 필요성이 있다.
=> socket.io를 사용하지 않고 WebRTC의 data channel을 통해서 채팅을 구현할 수 있다.https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API/Using_data_channels