WebRTC를 사용해서 1:1 화상통화 서비스가 포함된 프로젝트를 진행중이다.
이 때 필요한 서버는
1. Signaling Server
2. STUN Server
3. TURN Server
만약 1:1 방식의 화상통화가 아닌 1:N 혹은 N:M 방식이라면
Media Server를 추가하는 것이 좋다.
Signaling Server
양쪽의 클라이언트를 연결시켜주는 역할을 하는 서버이다.
각 클라이언트들의 연결을 위해서는 먼저 정보의 전달이 필요한데,
이 정보를 SDP(Session Description Protocol)이라 하고
Siganling Server가 이 정보를 중계해주는 역할을 한다.
Spring Boot를 사용한다면 일반적으로 WebSocket을 사용하여 통신하게 된다.
그 순서를 알아보면
1번부터 4번의 순서로
Signaling Server를 통해서
본인의 SDP를 보내어주고 상대방의 SDP를 받아오게 된다.
그렇게 전달된 SDP를 토대로 ICE Candidate를 교환하며
연결이 이루어진다.
STUN Server
클라이언트간의 연결을 위해서 클라이언트 자신의 IP를 알려주어야 하는데,
이 서버가 그 역할을 해준다.
오픈소스가 많으니 그것을 사용해도 좋다.
TURN Server
STUN Server에서 여러 이유로 연결이 제한되는 경우
각 클라이언트의 중계역할을 해주는 서버이다.
이 때는 클라이언트간의 연결이 아닌
서버를 중계해서 연결되는 구조로 변환되게 된다.
클라이언트간의 연결이 아니므로 부하가 많아질 수 있다.
그 후
그 후에는 트래픽 관련된 문제를 고려해보자.
이 문제는 서버를 구현하면서 생각으로만 걱정하고
실제로 시간의 여유가 없어 구현하지 못했었지만...
이번에는 조금이라도 고려해보자 한다.
Reference
[언택트 기술 시리즈]webrtc 서버 구축 1편 -기초
아자르, 스무디, 행아웃 언택트 시대하면 위 서비스들을 한번쯤은 들어보거나 사용해봤을 것이다. 맞다. 위 서비스들은 webrtc로 만들어진 서비스 들이다. 'webrtc = 영상통화,화상회의'라고 말할수
kid-dev.tistory.com
'WEB' 카테고리의 다른 글
[Trouble Shooting] 미디어 스트림 오류 ->> TypeError: Cannot read properties of undefined (reading 'getUserMedia') (0) | 2023.05.31 |
---|---|
[Trouble Shooting] CORS 에러 ->> The request client is not a secure context and the resource is in more-private address space `private`. (0) | 2023.05.31 |
[Web] WebSocket API / REST API (0) | 2023.04.13 |
[Web] Web Socket / Web RTC (0) | 2023.04.09 |
[React] 리액트 시작하기 (0) | 2022.12.27 |