Notice
Recent Posts
Recent Comments
Link
투케이2K
173. (Aws/Amazon) [Aws Kinesis Video Streams] WebRTC PeerConnection 피어 연결 상태 정리 및 세션 유효성 확인 본문
Aws (Amazon)
173. (Aws/Amazon) [Aws Kinesis Video Streams] WebRTC PeerConnection 피어 연결 상태 정리 및 세션 유효성 확인
투케이2K 2026. 1. 20. 19:38728x90
[개발 환경 설정]
개발 환경 : Aws / Amazon Web Services

[설명 정리]
// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------
- 인프라 : Aws / Amazon Web Services
- 기술 구분 : Aws / Aws Kinesis Video Streams / KVS / WebRTC
- 사전) WebRTC 설명 :
>> WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다
>> WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화할 수 있습니다
>> WebRTC 주요 용어 :
- SDP (Session Description Protocol) : 오디오/비디오 코덱, 해상도, 포트 등 스트리밍 정보를 담은 텍스트 포맷
- Offer / Answer : 통신 연결을 협상하기 위한 SDP 메시지 (초기 연결 설정)
- ICE (Interactive Connectivity Establishment) : NAT/P2P 환경에서도 연결 가능한 경로(IP, 포트 등)를 찾기 위한 기술
- Candidate : 가능한 연결 경로 (IP + Port 조합)
>> WebRTC SDP 오퍼 생성 (뷰어) 및 응답 (마스터) 스트리밍 플로우 :
[Viewer → Signaling Server] -- SDP Offer --> [Master] : 뷰어는 마스터로 스트리밍 오퍼 신호 보낸다
[Master] -- SDP Answer --> [Viewer] : 마스터는 특정 뷰어의 오퍼 신호 확인 후 응답을 보낸다
[Viewer] -- ICE Candidate --> [Master] : 스트리밍을 할 수 있는 경로 확인
[Master] -- ICE Candidate --> [Viewer] : 스트리밍을 할 수 있는 경로 확인
P2P 연결 성립 → 스트리밍 시작
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설 명]
// --------------------------------------------------------------------------------------
1. ✅ PeerConnection 자체 상태 확인 방법 : connectionState
>> 자바스크립트 코드 소스 코드 예시 :
pc.onconnectionstatechange = () => {
console.log("connectionState:", pc.connectionState);
};
>> connectionState 상태 정리 :
- new : 시그널링/ICE 시작 전
- connecting : ICE/DTLS handshake 중
- connected : WebRTC 연결 정상
- disconnected일시적 끊김 (재연결 가능)
- failed : 완전히 실패한 상태
- closed : PeerConnection 종료
>> 연결 유효성 판단 기준 :
- connected 상태 이면 정상
- disconnected 는 지연·네트워크 문제일 가능성 → 재연결 로직 필요
- failed 는 완전 종료 필요
2. ✅ ICE 연결 상태 확인 방법 : iceConnectionState
>> 자바스크립트 코드 소스 코드 예시 :
pc.oniceconnectionstatechange = () => {
console.log("iceConnectionState:", pc.iceConnectionState);
};
>> iceConnectionState 상태 정리 :
- checking : ICE 연결 설정 중
- connected : ICE 연결 성공
- completed : 모든 ICE 후보 확인 완료
- disconnected : 네트워크 이슈/일시적 손실
- failedICE : 실패 → 연결 전체 실패
>> 연결 유효성 판단 기준 :
- ICE 가 failed 면 PeerConnection도 거의 100% 실패한 상태입니다
3. ✅ DTLS 상태 확인 (보안 채널) 방법 : dtlsState
>> 자바스크립트 코드 소스 코드 예시 :
pc.ondtlsstatechange = () => {
console.log("dtlsState:", pc.dtlsState);
};
>> dtlsState 상태 정리 :
- connecting : 핸드셰이크 중
- connected : 보안 세션 정상
- closed : 종료
- failed : DTLS 실패 = 미디어 전달 불가
4. ✅ Media Tracks 상태 체크 방법 : 미디어가 정상적으로 전송되고 있는지 확인
>> 자바스크립트 코드 소스 코드 예시 :
pc.getStats().then(stats => {
stats.forEach(report => {
if (report.type === "inbound-rtp" || report.type === "outbound-rtp") {
console.log(report.bytesReceived, report.bytesSent);
}
});
});
>> 연결 유효성 판단 기준 :
- bytesSent/bytesReceived 증가 → 정상 동작 중
- 증가하지 않으면 → 연결 문제 or 네트워크 단절
5. ✅ connectionState 와 iceConnectionState 를 사용해 PeerConnection 연결 상태 체크 함수
function isPeerConnectionValid(pc) {
const state = pc.connectionState;
const ice = pc.iceConnectionState;
if (state === "connected" &&
(ice === "connected" || ice === "completed")) {
return true;
}
return false;
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[Aws Kinesis Video Streams] WebRTC SDP 협상 과정 프로세스 정리 정리
https://blog.naver.com/kkh0977/224030054470
[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]
https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist
[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]
https://blog.naver.com/kkh0977/223858189791
[업무 이슈] AWS WebRTC 실시간 비디오 재생 시 Client 클라이언트 연결 접속 및 해제 상태 확인 이슈
https://blog.naver.com/kkh0977/223966952222
[업무 이슈] 안드로이드 웹뷰에서 AWS WebRTC 웹 뷰어 영상 재생 중 앱 화면 종료 시 마스터에서 뷰어 close 상태가 늦게 감지 되는 이슈
https://blog.naver.com/kkh0977/224020488268
[Aws] WebRTC Viewer 뷰어 기기에서 실시간 디바이스 기기 해상도 확인 로직
https://blog.naver.com/kkh0977/224024795533
// --------------------------------------------------------------------------------------
728x90
반응형
'Aws (Amazon)' 카테고리의 다른 글
Comments
