728x90

WebRTC(Web Real-Time Communication)는 브라우저와 모바일 애플리케이션 간의 실시간 통신을 가능하게 하는 강력한 API(Application Programming Interface)입니다. JavaScript를 기반으로 하며 개발자가 비디오 및 음성 채팅, 파일 공유, 화면 공유 등과 같은 피어 투 피어 통신 응용 프로그램을 구축할 수 있습니다.

JavaScript WebRTC를 사용하는 단계는 다음과 같습니다.

새 WebRTC 프로젝트를 만듭니다.

WebRTC 사용을 시작하려면 새 프로젝트를 생성하고 프로젝트에 WebRTC API를 포함해야 합니다. Visual Studio Code 또는 IntelliJ IDEA와 같은 IDE(통합 개발 환경) 또는 텍스트 편집기를 사용하여 새 프로젝트를 만들 수 있습니다. 프로젝트를 만든 후에는 HTML 파일에 다음 행을 추가하여 WebRTC API를 포함할 수 있습니다.

<script src="https://webrtc.github.io/adapter/adapter-latest.js">

이 줄은 WebRTC 어댑터 라이브러리를 로드하여 브라우저 간 WebRTC 구현의 차이점을 표준화하는 데 도움을 줍니다.

MediaStream 개체를 만듭니다.

MediaStream 개체는 오디오 및 비디오와 같은 로컬 미디어 스트림에 액세스하는 데 사용됩니다. 사용자에게 카메라와 마이크에 대한 액세스 권한을 부여하라는 메시지를 표시하는 getUserMedia() 함수를 사용하여 MediaStream 객체를 생성할 수 있습니다. 예를 들면 다음과 같습니다.

navigator.mediaDevices.getUserMedia({ video: true, audio: true })

.then(function(stream) {

// handle the stream

})

.catch(function(error) {

// handle the error

});

이 예제에서 `getUserMedia()` 함수는 비디오 및 오디오 스트림 모두에 대한 액세스를 요청하는 데 사용됩니다. 사용자가 액세스 권한을 부여하면 스트림 개체가 함수로 반환되어 스트림을 처리할 수 있습니다.

피어 연결 만들기:

피어 연결은 WebRTC API의 핵심입니다. 두 피어가 서로 연결하고 통신할 수 있습니다. 피어 연결을 생성하려면 다음과 같이 `RTCPeerConnection()` 생성자를 호출해야 합니다.

var pc = new RTCPeerConnection();

Ice Candidates 추가:

Ice Candidates는 두 피어 간의 연결을 설정하는 데 사용됩니다. 얼음 후보를 추가하려면 다음과 같이 `addIceCandidate()` 메서드를 사용할 수 있습니다.

pc.addIceCandidate(candidate)

.then(function() {

// success

})

.catch(function(error) {

// handle the error

});

Offer 만들기:

연결을 설정하려면 한 피어가 로컬 미디어 스트림에 대한 설명인 Offer을 생성해야 합니다. Offer을 생성하려면 다음과 같이 `createOffer()` 메서드를 사용할 수 있습니다.

pc.createOffer()

.then(function(offer) {

// set the local description

return pc.setLocalDescription(offer);

})

.then(function() {

// send the offer to the other peer

})

.catch(function(error) {

// handle the error

});

Answer 만들기:

다른 피어가 제안을 받으면 로컬 미디어 스트림에 대한 설명인 Answer을 작성해야 합니다. Answer을 만들려면 다음과 같이 `createAnswer()` 메서드를 사용할 수 있습니다.

pc.createAnswer()

.then(function(answer) {

// set the local description

return pc.setLocalDescription(answer);

})

.then(function() {

// send the answer to the other peer

})

.catch(function(error) {

// handle the error

});

728x90

'IT' 카테고리의 다른 글

자바스크립트 "WebGL API"  (0) 2023.03.09
자바스크립트 "WebOTP API"  (0) 2023.03.08
자바스크립트, WebTransport API  (0) 2023.03.08
자바스크립트, WebUSB API  (0) 2023.03.08
자바스크립트, WebVR API  (0) 2023.03.08

+ Recent posts