💡 Web Real-Time Communication은 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고 마음대로 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다.
역할
특징
장점
단점
역할
특징
장점
단점
특징
장점
단점
사용자의 카메라와 마이크에 접근하여 오디오와 비디오 스트림을 캡쳐합니다.
navigator.mediaDevices.getUserMedia()
를 사용하여 접근 가능합니다.
예시
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then(stream => {
// 스트림을 사용합니다
videoElement.srcObject = stream;
})
.catch(error => {
console.error("Error accessing media devices.", error);
});
두 피어 간의 오디오, 비디오, 데이터 스트림을 전송하는 데 사용됩니다.
ICE (Interactive Connectivity Establishment) 프로토콜을 통해 피어 간의 연결을 설정하고 유지합니다.
보안, 대역폭 관리, 네트워크 최적화 등을 처리합니다.
예시
const peerConnection = new RTCPeerConnection(configuration);
// 로컬 미디어 스트림을 연결에 추가
stream.getTracks().forEach(track => peerConnection.addTrack(track, stream));
// ICE 후보 수신
peerConnection.onicecandidate = event => {
if (event.candidate) {
sendCandidateToRemotePeer(event.candidate);
}
};
// 원격 스트림 수신
peerConnection.ontrack = event => {
remoteVideoElement.srcObject = event.streams[0];
};
피어 간에 임의의 데이터를 전송하는 데 사용됩니다.
게임, 파일 공유, 채팅 어플리케이션 등에서 활용됩니다.
예시
const dataChannel = peerConnection.createDataChannel("myDataChannel");
dataChannel.onopen = () => {
console.log("Data channel is open");
};
dataChannel.onmessage = event => {
console.log("Received message:", event.data);
};
dataChannel.send("Hello, World!");