recursal/MDN huggingface dataset:
RTCPeerConnection.localDescription
==================================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

읽기 속성인 `RTCPeerConnection.localDescription`는 연결의 로컬 엔드에 대한 세션을 설명하는 `RTCSessionDescription` (en-US)를 반환합니다. 아직 설정이 안되어있다면, **null** 입니다.

Syntax
------


```js
const sessionDescription = peerConnection.localDescription;
```


기본적으로 반환 값은 해당 속성이 `null`이 아닐 때에만 `RTCPeerConnection.pendingLocalDescription` (en-US)의 값입니다. 그렇지 않은 경우에는 `RTCPeerConnection.currentLocalDescription`의 값이 반환됩니다. 이 알고리즘 및 사용하는 이유에 대한 자세한 설명은 Pending and current descriptions (en-US)를 참조하십시오.

예시
--

아래의 예시에서는 `localDescription`를 확인하고, `RTCSessionDescription` (en-US) 객체의 타입과 sdp필드를 담고있는 경고를 띄웁니다.


```js
const pc = new RTCPeerConnection();
// ...
const sd = pc.localDescription;
if (sd) {
  alert(`Local session: type='${sd.type}'; sdp description='${sd.sdp}'`);
} else {
  alert("No local session yet.");
}
```

명세서
---

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-localdescription |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* `RTCPeerConnection.setLocalDescription()`, `RTCPeerConnection.pendingLocalDescription` (en-US), `RTCPeerConnection.currentLocalDescription`
* `RTCPeerConnection.setRemoteDescription()` (en-US), `RTCPeerConnection.remoteDescription` (en-US), `RTCPeerConnection.pendingRemoteDescription` (en-US), `RTCPeerConnection.currentRemoteDescription`
* WebRTC (en-US)
RTCPeerConnection.close()
=========================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

**`RTCPeerConnection.close()`** 메소드로 피어 연결을 종료합니다.

Syntax
------


```js
RTCPeerConnection.close();
```


*이 메소드는 입력 패러미터가 없으며, 반환 값도 없습니다.*

이 메소드를 호출하게되면, 모든 진행 중인 ICE 프로세싱 및 활성화된 스트림을 종료하고, `RTCPeerConnection`의 ICE 에이전트를 종료합니다. 이 방법으로 ICE 에이전트에 의해 사용되는 리소스들 (TURN 허가 포함) 을 해제시킵니다. 모든 `RTCRtpSender` (en-US) 객체들은 이 메소드가 반환되면 정지됩니다. (아직 종료 중인 과정에 있을 수도 있습니다만, 사실상 정지됩니다.)

이 메소드가 반환되면, `RTCPeerConnection.signalingState` (en-US)에 의해 반환된 signaling 상태가 `closed`로 됩니다.

같은 원격 유저와의 새로운 연결 생성을 시도하기전에 이전에 존재하던 `RTCPeerConnection` (en-US)의 모든 참조 값들을 `delete`하십시오. 삭제되지 않은 참조 값들이 브라우저에서 오류를 초래 할 수 있습니다.

예시
--


```js
var pc = new RTCPeerConnection();
var dc = pc.createDataChannel("my channel");

dc.onmessage = function (event) {
  console.log("received: " + event.data);
  pc.close(); // 첫 메세지를 받으면, 연결을 종료
};

dc.onopen = function () {
  console.log("datachannel open");
};

dc.onclose = function () {
  console.log("datachannel close");
};
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-close |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC (en-US)
* `RTCPeerConnection` (en-US)
* `RTCPeerConnection.signalingState` (en-US)
RTCPeerConnection.canTrickleIceCandidates
=========================================

읽기 속성인 **`RTCPeerConnection` (en-US)** 속성의 **`canTrickleIceCandidates`** 는 원격유저가 trickled ICE candidates를 승인 할 수 있는지의 여부를 알려주는 `Boolean`을 반환합니다.

**ICE trickling** 은 초기 offer 혹은 answer를 다른 유저에게 이미 전달을 했음에도 계속해서 candidate를 보내는 과정을 뜻합니다.

이 속성은 `RTCPeerConnection.setRemoteDescription()` (en-US)가 호출된 후에만 설정됩니다. Signaling 프로토콜이 trickling 지원을 감지하는 방법을 제공해서 이 속성에 의존 할 필요가 없이 하는 것이 가장 좋은 방법입니다. WebRTC 브라우저는 항상 trickle ICE를 지원하게 되어있습니다. 하지만 몇몇 경우에 trickling이 지원이 되지 않거나 애초에 지원하는지를 알 수 없다면, 이 속성의 값이 이상한지 확인하고, 또한 초기 offer를 생성하고 전달하기 이전에 `iceGatheringState`의 값이 `"completed"`로 바뀌기전까지 기다릴 수 있습니다. 이러한 방식으로 offer에 모든 candidate들이 포함되도록 만들 수 있습니다.

Syntax
------


```js
var canTrickle = RTCPeerConnection.canTrickleIceCandidates;
```

### 값

`Boolean`는 원격 유저가 trickled ICE candidate를 수용 할 수 있으면 `true` 값이고, 그렇지 않으면 `false` 값 입니다. 이미 원격 유저가 생성되었으면, 이 값은 `null` 입니다.

**참고:** **참조:** 이 속성의 값은 로컬 피어가 `RTCPeerConnection.setRemoteDescription()` (en-US)를 호출하게 되면 결정됩니다.

여기에서 제공된 정보를 사용해서 ICE agent가 원격 유저가 trickled ICE candidate를 지원하는지에 대한 여부를 결정해줍니다.

예시
--


```js
var pc = new RTCPeerConnection();
// The following code might be used to handle an offer from a peer when
// it isn't known whether it supports trickle ICE.
pc.setRemoteDescription(remoteOffer)
  .then(\_ => pc.createAnswer())
  .then(answer => pc.setLocalDescription(answer))
  .then(\_ =>
    if (pc.canTrickleIceCandidates) {
      return pc.localDescription;
    }
    return new Promise(r => {
      pc.addEventListener('icegatheringstatechange', e => {
        if (e.target.iceGatheringState === 'complete') {
          r(pc.localDescription);
        }
      });
    });
  })
  .then(answer => sendAnswerToPeer(answer)) // signaling message
  .catch(e => handleError(e));

pc.addEventListener('icecandidate', e => {
  if (pc.canTrickleIceCandidates) {
    sendCandidateToPeer(e.candidate); // signaling message
  }
});
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-cantrickleicecandidates |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC (en-US)
* `RTCPeerConnection.addIceCandidate()`
* Lifetime of a WebRTC session (en-US)
RTCPeerConnection.generateCertificate()
=======================================

`RTCPeerConnection` (en-US) 인터페이스의 **`generateCertificate()`** 메소드는 X.509 인증서와 해당하는 개인 키를 생성하고 저장합니다. 그리고 접근이 가능한 `RTCCertificate` (en-US)를 반환합니다.

Syntax
------


```js
var cert = RTCPeerConnection.generateCertificate(keygenAlgorithm);
```

### 매개변수

`keygenAlgorithm`

키를 생성하는데 사용하는 알고리즘을 식별하는 `DOMString`입니다.


**참고:** `RTCPeerConnection.generateCertificate()` 은 정적인 메소드로, 따라서 인스턴스가 아닌 `RTCPeerConnection` 인터페이스에서 항상 호출됩니다.

### 반환 값

`RTCCertificate` (en-US) 객체에 대한 참조 값입니다.

### 예제


```js
RTCPeerConnection.generateCertificate({
  name: "RSASSA-PKCS1-v1\_5",
  hash: "SHA-256",
  modulusLength: 2048,
  publicExponent: new Uint8Array([1, 0, 1]),
}).then(function (cert) {
  var pc = new RTCPeerConnection({ certificates: [cert] });
});
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-generatecertificate |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* Using Service Workers (en-US)
* `Cache`
* `WorkerGlobalScope.caches` (en-US)
RTCPeerConnection: icegatheringstatechange event
================================================

**`icegatheringstatechange`** 이벤트는 ICE candidate 수집 과정이 변경되면, `RTCPeerConnection` (en-US)의 이벤트 핸들러인 `onicegatheringstatechange`로 전달됩니다. 이는 연결의 `iceGatheringState` 속성이 변경되었다는 것을 뜻합니다.

ICE가 처음 연결 candidate들을 수집하게되면 값이 `new`에서 `gathering`으로 바뀌게 되고, 이는 연결에 대한 candidate 설정들을 수집하는 과정 중에 있다는 뜻입니다. 값이 complete가 되면, RTCPeerConnection을 구성하는 모든 트랜스포트들이 ICE candidate 수집을 완료한 상태입니다.

| Bubbles | No |
| --- | --- |
| 취소가능여부 | No |
| 인터페이스 | `Event` |
| 이벤트 핸들러 | `onicegatheringstatechange` |

**참고:** ICE candidate 수집 과정이 완료되었는지는 `icegatheringstatechange`이벤트와 `iceGatheringState`의 값이 `complete`로 바뀌는 것을 확인하면 알 수 있습니다. 하지만, 더 쉬운 방법으로는 `icecandidate` 이벤트에 대한 핸들러가 `candidate` 속성의 값이 null로 변하는 시점을 체크하도록 할 수 있습니다. 이 속성이 `null` 값으로 바뀌었다는 것은 즉 모든 candidate 수집이 완료되었다는 뜻입니다.

예시
--

아래 예제는 `icegatheringstatechange` 이벤트에대한 핸들러를 생성합니다.


```js
pc.onicegatheringstatechange = (ev) => {
  let connection = ev.target;

  switch (connection.iceGatheringState) {
    case "gathering":
      /\* candidate 수집 과정 시작 \*/
      break;
    case "complete":
      /\* candidate 수집 완료 \*/
      break;
  }
};
```


아래처럼 `addEventListener()`을 사용해서 `icegatheringstatechange` 이벤트에 대한 변경을 감지하는 리스너를 추가 할 수 있습니다.


```js
pc.addEventListener(
  "icegatheringstatechange",
  (ev) => {
    let connection = ev.target;

    switch (connection.iceGatheringState) {
      case "gathering":
        /\* candidate 수집 과정 시작 \*/
        break;
      case "complete":
        /\* candidate 수집 완료 \*/
        break;
    }
  },
  false,
);
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-onicegatheringstatechange |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC API
* Signaling and video calling
* WebRTC connectivity (en-US)
* Lifetime of a WebRTC session (en-US)
RTCPeerConnection.ondatachannel
===============================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

**`RTCPeerConnection.ondatachannel`** 속성은 `RTCPeerConnection` (en-US)에서 발생하는 `datachannel` 이벤트에 의해 호출되는 `event handler`입니다. 이 속성에는 함수를 정의하게됩니다. `RTCDataChannelEvent`의 한 종류인 이 이벤트는 원격 유저가 `createDataChannel()`를 호출해서 연결에 `RTCDataChannel` (en-US)가 추가되었을 때, 전달됩니다.

이 이벤트를 수신하게되는 시점에서는 `RTCDataChannel` (en-US)가 아직 열리지 않았을 수 있습니다. 사용하기 전에 꼭 신규 `RTCDataChannel`에 `"open"`이벤트가 발생하는 것을 확인하십시오.

Syntax
------


```js
RTCPeerConnection.ondatachannel = function;
```

### 값

이 속성에 지정하는 함수는 단일 패러미터를 입력 인자로 받습니다. `channel` 속성에 생성된 `RTCDataChannel` (en-US)를 제공하는 `RTCDataChannelEvent` 입니다.

예시
--


```js
pc.ondatachannel = function (ev) {
  console.log("Data channel is created!");
  ev.channel.onopen = function () {
    console.log("Data channel is open and ready to be used.");
  };
};
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-ondatachannel |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* The `datachannel` event and its type, `RTCDataChannelEvent`.
* `RTCPeerConnection.createDataChannel()`
* A simple RTCDataChannel sample (en-US)
RTCPeerConnection.currentLocalDescription
=========================================

읽기 속성인 **`RTCPeerConnection.currentLocalDescription`** 은 가장 최근에 `RTCPeerConnection` (en-US)가 성공적으로 네고시에이션을 마치고 원격 피어와 연결된, 연결인터페이스의 로컬 엔드를 설명하는 `RTCSessionDescription` (en-US) 객체를 반환합니다. 이외에도 설명에 의해 offer 혹은 answer가 처음으로 인스턴스화 되면 ICE 에이전트에 의해 이미 생성됬을수도 있는 ICE candidate 목록이 포함되어 있습니다.

`currentLocalDescription`을 바꾸기 위해서는, 이 값을 설정하도록 연쇄 이벤트를 작동시키는 `RTCPeerConnection.setLocalDescription()`를 호출하십시오. 이 연쇄 이벤트가 어떻게 값을 바꾸고, 왜 즉시 값이 바뀌지 않는지에 대해 궁금하다면, Pending and current descriptions (en-US)를 살펴보십시오.

**참고:** `RTCPeerConnection.localDescription`와 다르게, `currentLocalDescription`는 연결 인터페이스의 로컬 엔드에 대한 현재 상태를 나타내는 값 입니다. `localDescription`은 연결 인터페이스가 현재 어떤 상태로 전환 중인지를 설명하는 값을 명시 할 수 있습니다.

Syntax
------


```js
sessionDescription = RTCPeerConnection.currentLocalDescription;
```

### 반환 값

연결이 설정된 경우, 연결의 로컬 엔드에 대한 가장 최신 설명입니다. 성공적으로 연결이 설정이 되지 않았다면, 반환 값은 `null` 입니다.

예시
--

이 예시는 `currentLocalDescription`을 확인하고, `RTCSessionDescription` (en-US) 객체의 `type` 및 `sdp` 필드를 담고 있는 경고 메세지를 출력합니다.


```js
var pc = new RTCPeerConnection();
…
var sd = pc.currentLocalDescription;
if (sd) {
  alert("Local session: type='" +
        sd.type + "'; sdp description='" +
        sd.sdp + "'");
}
else {
  alert("No local session yet.");
}
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-currentlocaldesc |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**참고:** `currentLocalDescription`와 `pendingLocalDescription` (en-US)기능은 최근에 추가 되었습니다. 따라서, 이 기능을 지원하지 않는 브라우저에서는 `localDescription`를 사용하십시오.

참조
--

* `RTCPeerConnection.setLocalDescription()`, `RTCPeerConnection.pendingLocalDescription` (en-US), `RTCPeerConnection.localDescription`
* `RTCPeerConnection.setRemoteDescription()` (en-US), `RTCPeerConnection.remoteDescription` (en-US), `RTCPeerConnection.pendingRemoteDescription` (en-US), `RTCPeerConnection.currentRemoteDescription`
* WebRTC
RTCPeerConnection.onconnectionstatechange
=========================================

**`RTCPeerConnection.onconnectionstatechange`** 속성에 `RTCPeerConnection` (en-US) 인스턴스에서 발생하는 `connectionstatechange` 이벤트를 처리하기 위해 호출되는 `event handler`를 정의하게됩니다. 이 이벤트는 연결의 상태 집합체가 변할 때마다 발생합니다. 이 상태 집합체는 연결에 의해 사용되는 각각의 네트워크 전송 상태들의 묶음입니다.

Syntax
------


```js
RTCPeerConnection.onconnectionstatechange = eventHandler;
```

### 값

`RTCPeerConnection` (en-US)에서 `connectionstatechange` 이벤트가 생길 때, 브라우저에 의해 호출되는 함수입니다. 이 함수는 `Event` 타입의 객체인 단일 패러미터를 입력인자로 받습니다. 해당 이벤트 객체는 특별한 정보를 담고 있지는 않습니다. 새로운 상태를 확인하려면 피어 연결의 `connectionState`에 해당하는 값을 살펴보십시오.

예시
--


```js
pc.onconnectionstatechange = function (event) {
  switch (pc.connectionState) {
    case "connected":
      // The connection has become fully connected
      break;
    case "disconnected":
    case "failed":
      // One or more transports has terminated unexpectedly or in an error
      break;
    case "closed":
      // The connection has been closed
      break;
  }
};
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-onconnectionstatechange |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* `connectionstatechange` 이벤트와 이 이벤트의 타입인 `Event`을 참조하십시오.
RTCPeerConnection.setConfiguration()
====================================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

**`RTCPeerConnection.setConfiguration()`** 메소드는 `RTCConfiguration`객체에 명시한 값을 가지고 `RTCPeerConnection` (en-US)의 현재 설정을 지정합니다. 이 메소드를 사용해서 연결에서 사용되는 ICE 서버와 전송 정책을 변경 할 수 있습니다.

가장 보편적으로 쓰이는 방법은 사용하려는 ICE 서버 값으로 교체해주는것 입니다. (엄청 자주 사용되는 케이스는 아닐 것입니다) 이 방법을 수행하는 두 가지 시나리오는 아래와 같습니다:

* `RTCPeerConnection` (en-US)가 ICE 서버를 명시하지 않고 시작된 경우. 예를 들어, `RTCPeerConnection()` 생성자를 매개변수 없이 호출하게되면, 개발자가 직접 `setConfiguration()`를 호출해서 ICE 협상 시작 전에 ICE 서버를 추가해줘야 합니다.
* 연결의 재협상이 필요하거나, 어떤 이유로 인해서 다른 종류의 ICE 서버를 사용해야하는 경우. 예를 들어, 사용자가 새로운 지역으로 이동을 했기 때문에 지역 ICE 서버를 바꿔야하는 경우입니다. 이런 경우에는, `setConfiguration()`를 호출해서 신규 지역 ICE 서버로 바꿔주고, ICE restart (en-US)을 시작하게됩니다.

**참고:** 연결이 이미 설정이 되어있다면, 식별 정보는 변경 할 수 없습니다.

Syntax
------


```js
RTCPeerConnection.setConfiguration(configuration);
```

### 매개변수

`configuration`

설정을 할 수 있는 옵션들을 제공해주는 `RTCConfiguration` 객체입니다. 변경사항은 계속해서 추가되지 않습니다. 대신에, 신규 값이 기존의 값은 완전히 대체하게 됩니다.

### 예외처리

`InvalidAccessError`

`configuration.iceServers`에 정의한 하나 혹은 여러개의 URL이 TURN 서버 입니다. 하지만, 로그인을 위한 정보가 완전히 제공되지 않아서 발생하는 에러입니 (`RTCIceServer.username` (en-US) 혹은 `RTCIceServer.credentials`의 값이 없다는 뜻). 이로인해 서버에 로그인을 성공적으로 할 수 없게 됩니다.

`InvalidModificationError`

`configuration`에서 변경되는 식별 정보를 포함하고 있지만, 연결을 구성하면서 이미 식별 정보를 지정했기 때문에 발생하는 에러입니다. 이 에러는 `configuration.peerIdentity` 혹은 `configuration.certificates`가 설정이 되어있고, 이 값들이 현재 설정 값과 다르기 때문에 발생합니다.

`InvalidStateError`

`RTCPeerConnection` (en-US)이 닫혀있어서 발생하는 에러입니다.

`SyntaxError`

`configuration.iceServers`에 제공된 하나 혹은 여러개의 URL 리스트가 유효하지 않아서 발생하는 에러입니다.

예시
--

아래의 예시에서는 ICE 재시작이 필요한 것을 확인하고, 다른 ICE 서버를 사용해서 협상이 이루어지도록 합니다.


```js
var restartConfig = {
  iceServers: [
    {
      urls: "turn:asia.myturnserver.net",
      username: "allie@oopcode.com",
      credential: "topsecretpassword",
    },
  ],
};

myPeerConnection.setConfiguration(restartConfig);

myPeerConnection
  .createOffer({ iceRestart: true })
  .then(function (offer) {
    return myPeerConnection.setLocalDescription(offer);
  })
  .then(function () {
    // send the offer to the other peer using the signaling server
  })
  .catch(reportError);
```


먼저, 신규 `RTCConfiguration`가 신규 ICE 서버와 인증 정보를 명시한 `restartConfig`를 가지도록 생성됩니다. 그리고 설정한 `RTCConfiguration`가 `setConfiguration()`에 전달됩니다. `iceRestart` 옵션의 값을 `true`로 지정하고, `createOffer()` (en-US)을 호출해서 ICE 협상이 재시작됩니다. 이후에, 반환받은 offer를 local description으로 설정하고, 다른 피어에게 offer를 전달하는 것과 같이 일반적으로 진행되도록 처리합니다.

명세서
---

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-setconfiguration |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* `RTCPeerConnection.getConfiguration()`
* `RTCConfiguration`
* `RTCPeerConnection` (en-US)
RTCPeerConnection.setIdentityProvider()
=======================================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

**`RTCPeerConnection.setIdentityProvider()`** 메소드는 이름, 통신에 사용된 프로토콜 (옵션), 유저 이름 (옵션)으로 구성된 세 가지 매개변수에 식별 제공자 (Identity Provider, IdP)를 지정합니다. IdP는 주장 (assertion)이 필요한 순간에만 사용 될 것입니다.

`signalingState` (en-US)가 `"closed"`로 지정되어있다면, `InvalidStateError` 에러가 발생합니다.

Syntax
------


```js
pc.setIdentityProvider(domainname [, protocol] [, username]);
```


*이 메소드는 반환 값이 존재하지 않습니다.*

### 매개변수

*domainname*

IdP가 존재하는 도메인 이름을 나타내는 `DOMString`입니다.

*protocol* Optional

IdP와 통신하기위해 사용된 프로토콜을 나타내는 `DOMString`입니다. 디폴트 값은 `"default"`로 설정되어있고, IdP가 감청하게되는 URL를 결정하는데에 사용됩니다.

*username* Optional

IdP와 연관된 유저 이름을 나타내는 `DOMString`입니다.

예시
--


```js
var pc = new PeerConnection();

pc.setIdentityAssertion("developer.mozilla.org");
```

사양서
---

| Specification |
| --- |
| Identity for WebRTC 1.0 # dom-rtcpeerconnection-setidentityprovider |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC (en-US)
RTCPeerConnection.iceGatheringState
===================================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

읽기 속성인 **`RTCPeerConnection.iceGatheringState`** 는 연결 인터페이스의 ICE 수집 상태를 알려주는 `RTCIceGatheringState`타입의 Enum을 반환합니다. 이 속성을 활용하면, ICE candidate 수집 과정이 언제 종료되는지 감지 할 수 있습니다.

`icegatheringstatechange`타입의 이벤트 감시를 통해 이 속성 값이 언제 변하는지를 확인 할 수 있습니다.

Syntax
------


```js
var state = RTCPeerConnection.iceGatheringState;
```

### 값

반환되는 값은 `RTCIceGatheringState`타입의 Enum입니다.

### RTCIceGatheringState enum섹션 (en-US)

`RTCPeerConnection.iceGatheringState` 속성을 사용하게되면 반환되는 `RTCIceGatheringState` enum은 현재의 ICE 수집 상태를 반영하여 알려주는 문자열 상수입니다. `icegatheringstatechange` 타입의 이벤트를 감시해서 이 값이 언제 변하는지 확인 할 수 있습니다.

| 상수명 | 설명 |
| --- | --- |
| `"new"` | 피어 연결이 새로 생성되었지만, 아직 네트워킹은 시작되지 않은 상태 |
| `"gathering"` | ICE 에이전트가 연결을 위한 ICE candidate를 수집하는 과정에 있음을 알려주는 상태 |
| `"complete"` | ICE 에이전트가 candidate 수집을 완료한 상태. 새로운 인터페이스가 추가되거나, 신규 ICE 서버가 추가와 같이 신규 ICE candidate를 수집해야하는 상황이 오면, 상태가 `complete`에서 `gathering`으로 다시 바뀝니다. |

예시
--


```js
var pc = new RTCPeerConnection();
var state = pc.iceGatheringState;
```

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-ice-gathering-state |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* `icegatheringstatechange`
* WebRTC (en-US)
RTCPeerConnection.getIdentityAssertion()
========================================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

**`RTCPeerConnection.getIdentityAssertion()`** 메소드는 식별 주장의 수집을 시작합니다. 이 메소드는 `signalingState` (en-US)가 `"closed"` 상태가 아닐 때에만 유효합니다.

이 메소드는 즉시 반환하게됩니다. 식별 주장이 생성 될 수 없다면, 객체에 `idpassertionerror`가 전달됩니다.

이는 자동으로 수행되기 때문에, 어플리케이션에서 `RTCPeerConnection`을 직접 다룰 일은 없습니다.명시적인 호출로 필요한 것이 무엇인지 정도만 알 수 있습니다.

Syntax
------


```js
pc.getIdentityAssertion();
```


*이 메소드에는 매개변수 혹은 반환 값이 없습니다.*

예시
--


```js
var pc = new PeerConnection();

pc.getIdentityAssertion(); // Not mandatory, but we know that we will need it in the future.
```

명세
--

| Specification |
| --- |
| Identity for WebRTC 1.0 # dom-rtcpeerconnection-getidentityassertion |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC (en-US)
RTCPeerConnection.removeTrack()
===============================

**`RTCPeerConnection.removeTrack()`** 메소드는 `RTCPeerConnection.getSenders()`에 의해 보고된 발신자 목록에서 해당 `RTCRtpSender` (en-US)를 실제로 제거하지 않은채, 지정한 트랙에서 미디어 전송을 중단하도록 연결의 로컬엔드에 알려줍니다. 해당 트랙이 이미 중단되었거나, 연결의 발신자 목록에 존재하지 않으면, 이 메소드는 아무 영향이 없습니다.

연결이 이미 협상된 경우 (`signalingState` (en-US)가 `"stable"`로 설정된 경우), 재협상이 필요하다고 표시를 하게됩니다. 따라서, 원격 유저는 해당 협상이 발생하기 전까지 아무런 변화를 감지 할 수 없습니다. `negotiationneeded` 이벤트가 `RTCPeerConnection` (en-US)에 전송되고, 로컬엔드에게 해당 협상이 반드시 발생해야 한다고 알려주게됩니다.

Syntax
------


```js
pc.removeTrack(sender);
```

### 매개변수

`mediaTrack`

연결에서 해당하는 발신자를 제거하도록 알려주는 `RTCRtpSender` (en-US).

### 반환 값

`undefined`.

### 예외처리

`InvalidStateError`

연결이 열린 상태가 아닙니다.

예시
--

아래의 예시는 연결에 비디오 트랙을 추가하고, 닫기 버튼을 감청하여 유저가 버튼을 클릭하면 해당 미디어를 제거하도록 합니다.


```js
var pc, sender;
navigator.getUserMedia({ video: true }, function (stream) {
  pc = new RTCPeerConnection();
  var track = stream.getVideoTracks()[0];
  sender = pc.addTrack(track, stream);
});

document.getElementById("closeButton").addEventListener(
  "click",
  function (event) {
    pc.removeTrack(sender);
    pc.close();
  },
  false,
);
```

사양서
---

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-removetrack |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC API
RTCPeerConnection.getReceivers()
================================

**실험적:** **이 기능은 실험적인 기능입니다.**  
프로덕션 환경에서 사용하기 전에 브라우저 호환성 표를 주의 깊게 확인하세요.

**`RTCPeerConnection.getReceivers()`** 메소드는 `RTCRtpReceiver` (en-US) 객체의 배열을 반환합니다. 이 배열의 각 요소들은 RTP 리시버를 나타냅니다. 각각의 RTP 리시버는 `RTCPeerConnection` (en-US)에 대한 `MediaStreamTrack`의 데이터를 수신하고 디코딩 합니다.

Syntax
------


```js
var receivers[] = RTCPeerConnection.getReceivers();
```

### 반환 값

연결에 대한 각 트랙마다 한 개씩 `RTCRtpReceiver` (en-US) 객체의 배열을 반환합니다. R연결에 대한 RTP 리시버가 없으면, 배열은 빈 상태입니다.

`RTCReceiver` 인스턴스에서 반환되는 순서는 명세서에 정의되어있지 않고, `getSenders()`호출을 사용해서 다음 배열의 요소로 바꿀 수 있습니다.

예시
--

tbd

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-getreceivers |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC
* `RTCRtpSender` (en-US)
RTCPeerConnection.getSenders()
==============================

`RTCPeerConnection` (en-US)의 **`getSenders()`** 메소드는 `RTCRtpSender` (en-US) 객체의 배열을 반환합니다. 배열의 각 객체는 하나의 트랙의 데이터의 송신을 담당하는 RTP sender를 나타냅니다. Sender 객체는 트랙 데이터의 인코딩과 송신을 확인하고, 조작 할 수 있는 메소드와 속성들을 제공합니다.

Syntax
------


```js
var senders = RTCPeerConnection.getSenders();
```

### 반환 값

연결의 각 트랙마다 한 개의 `RTCRtpSender` (en-US) 객체 배열을 반환합니다. 연결의 RTP sender가 존재하지 않으면, 배열은 빈 상태입니다.

`RTCRtpSender`s 의 반환 값 순서는 정의되어있지 않고, `getSenders()` 호출을 통해서 다음 배열 요소로 바꿀 수 있습니다.

예시
--

tbd

명세
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-getsenders |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

참조
--

* WebRTC
* `RTCRtpSender` (en-US)