RTCPeerConnection

초안

이 문서는 작성중입니다.

RTCPeerConnection 인터페이스는 로컬 컴퓨터와 원격 피어 간의 WebRTC 연결을 담당하며 원격 피어에 연결하기 위한 메서드들을 제공하고, 연결을 유지하고 연결 상태를 모니터링하며 더 이상 연결이 필요하지 않을 경우 연결을 종료합니다.

BCD tables only load in the browser

RTCPeerConnection() This is an experimental API that should not be used in production code.
The RTCPeerConnection() constructor returns a newly-created RTCPeerConnection, which represents a connection between the local device and a remote peer.

Also inherits properties from: EventTarget

canTrickleIceCandidates
The read-only RTCPeerConnection property canTrickleIceCandidates returns a Boolean which indicates whether or not the remote peer can accept trickled ICE candidates.
connectionState This is an experimental API that should not be used in production code.
The read-only connectionState property of the RTCPeerConnection interface indicates the current state of the peer connection by returning one of the string values specified by the enum RTCPeerConnectionState.
currentLocalDescription undefined
The read-only property RTCPeerConnection.currentLocalDescription returns an RTCSessionDescription object describing the local end of the connection as it was most recently successfully negotiated since the last time the  RTCPeerConnection finished negotiating and connecting to a remote peer. Also included is a list of any ICE candidates that may already have been generated by the ICE agent since the offer or answer represented by the description was first instantiated.
currentRemoteDescription undefined
The read-only property RTCPeerConnection.currentRemoteDescription returns an RTCSessionDescription object describing the remote end of the connection as it was most recently successfully negotiated since the last time the RTCPeerConnection finished negotiating and connecting to a remote peer. Also included is a list of any ICE candidates that may already have been generated by the ICE agent since the offer or answer represented by the description was first instantiated.
getDefaultIceServers() (en-US) This is an experimental API that should not be used in production code.
The getDefaultIceServers() method of the RTCPeerConnection interface returns an array of objects based on the RTCIceServer dictionary, which indicates what, if any, ICE servers the browser will use by default if none are provided to the RTCPeerConnection in its RTCConfiguration. However, browsers are not required to provide any default ICE servers at all.
iceConnectionState (en-US) undefined
The read-only property RTCPeerConnection.iceConnectionState returns an enum of type RTCIceConnectionState which state of the ICE agent associated with the RTCPeerConnection.
iceGatheringState This is an experimental API that should not be used in production code. undefined
The read-only property RTCPeerConnection.iceGatheringState returns an enum of type RTCIceGatheringState that describes connection's ICE gathering state. This lets you detect, for example, when collection of ICE candidates has finished.
localDescription This is an experimental API that should not be used in production code. undefined
The read-only property RTCPeerConnection.localDescription returns an RTCSessionDescription describing the session for the local end of the connection. If it has not yet been set, this is null.
peerIdentity (en-US) undefined
The read-only RTCPeerConnection property peerIdentity returns a JavaScript Promise that resolves to an RTCIdentityAssertion which contains a DOMString identifying the remote peer.
pendingLocalDescription (en-US) undefined
The read-only property RTCPeerConnection.pendingLocalDescription returns an RTCSessionDescription object describing a pending configuration change for the local end of the connection. This does not describe the connection as it currently stands, but as it may exist in the near future. Use RTCPeerConnection.currentLocalDescription or RTCPeerConnection.localDescription to get the current state of the endpoint. For details on the difference, see /en-US/docs/Web/API/WebRTC_API/Connectivity.
pendingRemoteDescription (en-US) undefined
The read-only property RTCPeerConnection.pendingRemoteDescription returns an RTCSessionDescription object describing a pending configuration change for the remote end of the connection. This does not describe the connection as it currently stands, but as it may exist in the near future. Use RTCPeerConnection.currentRemoteDescription or RTCPeerConnection.remoteDescription to get the current session description for the remote endpoint. For details on the difference, see /en-US/docs/Web/API/WebRTC_API/Connectivity.
remoteDescription (en-US) This is an experimental API that should not be used in production code. undefined
The read-only property RTCPeerConnection.remoteDescription returns a RTCSessionDescription describing the session (which includes configuration and media information) for the remote end of the connection. If this hasn't been set yet, this is null.
sctp (en-US) This is an experimental API that should not be used in production code.
The read-only sctp property on the RTCPeerConnection interface returns an RTCSctpTransport describing the SCTP transport over which SCTP data is being sent and received. If SCTP hasn't been negotiated, this value is null.
signalingState (en-US) undefined
The read-only signalingState property on the RTCPeerConnection interface returns one of the string values specified by the RTCSignalingState enum; these values describe the state of the signaling process on the local end of the connection while connecting or reconnecting to another peer. See /en-US/docs/Web/API/WebRTC_API/Session_lifetime for more details about the signaling process.

Also inherits 이벤트 핸들러 from: EventTarget

onaddstream (en-US) This deprecated API should no longer be used, but will probably still work.
The RTCPeerConnection.onaddstream event handler is a property containing the code to execute when the addstream event, of type MediaStreamEvent, is received by this RTCPeerConnection. Such an event is sent when a MediaStream is added to this connection by the remote peer. The event is sent immediately after the call RTCPeerConnection.setRemoteDescription and doesn't wait for the result of the SDP negotiation.
onconnectionstatechange
The RTCPeerConnection.onconnectionstatechange property specifies an EventHandler which is called to handle the connectionstatechange event when it occurs on an instance of RTCPeerConnection. This happens whenever the aggregate state of the connection changes.
ondatachannel This is an experimental API that should not be used in production code.
The RTCPeerConnection.ondatachannel property is an EventHandler which specifies a function which is called when the datachannel event occurs on an RTCPeerConnection. This event, of type RTCDataChannelEvent, is sent when an RTCDataChannel is added to the connection by the remote peer calling RTCPeerConnection.createDataChannel.
onicecandidate
The RTCPeerConnection property RTCPeerConnection.onicecandidate property is an EventHandler which specifies a function to be called when the icecandidate event occurs on an RTCPeerConnection instance. This happens whenever the local ICE agent needs to deliver a message to the other peer through the signaling server.
oniceconnectionstatechange (en-US) This is an experimental API that should not be used in production code.
The RTCPeerConnection.oniceconnectionstatechange property is an event handler which specifies a function to be called when the iceconnectionstatechange event is fired on an RTCPeerConnection instance. This happens when the state of the connection's ICE agent, as represented by the RTCPeerConnection.iceConnectionState property, changes.
onicegatheringstatechange This is an experimental API that should not be used in production code.
The RTCPeerConnection.onicegatheringstatechange property is an EventHandler which specifies a function to be called when the icegatheringstatechange event is sent to an RTCPeerConnection instance. This happens when the ICE gathering state—that is, whether or not the ICE agent is actively gathering candidates—changes.
onidentityresult This is an experimental API that should not be used in production code.
The RTCPeerConnection.onidentityresult event handler is a property containing the code to execute when the identityresult event, of type RTCIdentityEvent, is received by this RTCPeerConnection. Such an event is sent when an identity assertion is generated, via RTCPeerConnection.getIdentityAssertion() or during the creation of an offer or an answer.
onidpassertionerror (en-US) This is an obsolete API and is no longer guaranteed to work.
The RTCPeerConnection.onidpassertionerror event handler is a property containing the code to execute whent the idpassertionerror event, of type RTCIdentityErrorEvent, is received by this RTCPeerConnection. Such an event is sent when the associated identity provider (IdP) encounters an error while generating an identity assertion.
onidpvalidationerror (en-US) This is an obsolete API and is no longer guaranteed to work.
The RTCPeerConnection.onidpvalidationerror event handler is a property containing the code to execute whent the idpvalidationerror event, of type RTCIdentityErrorEvent, is received by this RTCPeerConnection. Such an event is sent when the associated identity provider (IdP) encounters an error while validating an identity assertion.
onnegotiationneeded (en-US) This is an experimental API that should not be used in production code.
The RTCPeerConnection interface's onnegotiationneeded property is an EventListener which specifies a function which is called to handle the negotiationneeded event when it occurs on an RTCPeerConnection instance. This event is fired when a change has occurred which requires session negotiation. This negotiation should be carried out as the offerer, because some session changes cannot be negotiated as the answerer.
onpeeridentity (en-US) This is an obsolete API and is no longer guaranteed to work.
The RTCPeerConnection.onpeeridentity event handler is a property containing the code to execute whent the peeridentity event, of type Event, is received by this RTCPeerConnection. Such an event is sent when an identity assertion, received from a peer, has been successfully validated.
onremovestream (en-US) This is an experimental API that should not be used in production code.
The removestream event has been removed from the WebRTC specification in favor of the existing removetrack event on the remote MediaStream and the corresponding MediaStream.onremovetrack event handler property of the remote MediaStream. The RTCPeerConnection API is now track-based, so having zero tracks in the remote stream is equivalent to the remote stream being removed and the old removestream event.
onsignalingstatechange (en-US)
The onsignalingstatechange event handler property of the RTCPeerConnection interface specifies a function to be called when the signalingstatechange event occurs on an RTCPeerConnection interface.
ontrack This is an experimental API that should not be used in production code.
The RTCPeerConnection property ontrack is an EventHandler which specifies a function to be called when the track event occurs, indicating that a track has been added to the RTCPeerConnection.

Also inherits methods from: EventTarget

addIceCandidate()
When a web site or app using RTCPeerConnection receives a new ICE candidate from the remote peer over its signaling channel, it delivers the newly-received candidate to the browser's ICE agent by calling RTCPeerConnection.addIceCandidate().
addStream() (en-US) This is an experimental API that should not be used in production code. This deprecated API should no longer be used, but will probably still work.
The obsolete RTCPeerConnection method addStream() adds a MediaStream as a local source of audio or video. Instead of using this obsolete method, you should instead use RTCPeerConnection.addTrack once for each track you wish to send to the remote peer.
addTrack()
The RTCPeerConnection method addTrack() adds a new media track to the set of tracks which will be transmitted to the other peer.
close() This is an experimental API that should not be used in production code.
The RTCPeerConnection.close() method closes the current peer connection.
createAnswer() This is an experimental API that should not be used in production code.
The createAnswer() method on the RTCPeerConnection interface creates an SDP answer to an offer received from a remote peer during the offer/answer negotiation of a WebRTC connection. The answer contains information about any media already attached to the session, codecs and options supported by the browser, and any ICE candidates already gathered. The answer is delivered to the returned Promise, and should then be sent to the source of the offer to continue the negotiation process.
createDataChannel() This is an experimental API that should not be used in production code.
The createDataChannel() method on the RTCPeerConnection interface creates a new channel linked with the remote peer, over which any kind of data may be transmitted.
createOffer() (en-US)
The createOffer() method of the RTCPeerConnection interface initiates the creation of an SDP offer for the purpose of starting a new WebRTC connection to a remote peer.
generateCertificate() static function
The static  RTCPeerConnection.generateCertificate() function creates an X.509 certificate and corresponding private key, returning a promise that resolves with the new RTCCertificate once it's generated.
getConfiguration() This is an experimental API that should not be used in production code.
The RTCPeerConnection.getConfiguration() method returns an RTCConfiguration object which indicates the current configuration of the RTCPeerConnection on which the method is called.
getIdentityAssertion() This is an experimental API that should not be used in production code.
The RTCPeerConnection.getIdentityAssertion() method initiates the gathering of an identity assertion. This has an effect only if the RTCPeerConnection.signalingState is not "closed".
getReceivers() This is an experimental API that should not be used in production code.
The RTCPeerConnection.getReceivers() method returns an array of RTCRtpReceiver objects, each of which represents one RTP receiver. Each RTP receiver manages the reception and decoding of data for a MediaStreamTrack on an RTCPeerConnection
getSenders()
The RTCPeerConnection method getSenders() returns an array of RTCRtpSender objects, each of which represents the RTP sender responsible for transmitting one track's data.
getStats() (en-US)
The RTCPeerConnection method getStats() returns a promise which resolves with data providing statistics about either the overall connection or about the specified MediaStreamTrack.
getStreamById() (en-US) This is an experimental API that should not be used in production code.
The RTCPeerConnection.getStreamById() method returns the MediaStream with the given id that is associated with local or remote end of the connection. If no stream matches, it returns null.
getTransceivers()
The RTCPeerConnection interface's getTransceivers() method returns a list of the RTCRtpTransceiver objects being used to send and receive data on the connection.
removeStream() (en-US) This is an experimental API that should not be used in production code. This deprecated API should no longer be used, but will probably still work.
The RTCPeerConnection.removeStream() method removes a MediaStream as a local source of audio or video. If the negotiation already happened, a new one will be needed for the remote peer to be able to use it. Because this method has been deprecated, you should instead use RTCPeerConnection.removeTrack if your target browser versions have implemented it.
removeTrack()
The RTCPeerConnection.removeTrack() method tells the local end of the connection to stop sending media from the specified track, without actually removing the corresponding RTCRtpSender from the list of senders as reported by RTCPeerConnection.getSenders().
restartIce()
The WebRTC API's RTCPeerConnection interface offers the restartIce() method to allow a web application to easily request that ICE candidate gathering be redone on both ends of the connection.
setConfiguration() This is an experimental API that should not be used in production code.
The RTCPeerConnection.setConfiguration() method sets the current configuration of the RTCPeerConnection based on the values included in the specified RTCConfiguration object. This lets you change the ICE servers used by the connection and which transport policies to use.
setIdentityProvider() This is an experimental API that should not be used in production code.
The RTCPeerConnection.setIdentityProvider() method sets the Identity Provider (IdP) to the triplet given in parameter: its name, the protocol used to communicate with it (optional) and an optional username. The IdP will be used only when an assertion is needed.
setLocalDescription()
The RTCPeerConnection method RTCPeerConnection.setLocalDescription changes the local description associated with the connection. This description specifies the properties of the local end of the connection, including the media format.
setRemoteDescription() (en-US)
The RTCPeerConnection method setRemoteDescription() sets the specified session description as the remote peer's current offer or answer. The description specifies the properties of the remote end of the connection, including the media format.

다음 메서드는 오래 전부터 사용되지 않았으며 모든 주요 브라우저에서 구현되지 않았습니다.

RTCPeerConnection.createDTMFSender() This is an obsolete API and is no longer guaranteed to work.
특정 MediaStreamTrack와 관련된 신규 RTCDTMFSender (en-US)를 생성합니다. RTCDTMFSender (en-US)는 연결을 통해 DTMF 전화 신호를 보낼 수 있습니다. 

addEventListener()를 이용하여 아래 이벤트를 리스닝하거나 이 인터페이스의 oneventname 프로퍼티에 이벤트 리스너를 할당할 수 있습니다.

connectionstatechange (en-US)
RTCPeerConnection의 연결상태가 바뀌면, RTCPeerConnection 객체에 전달합니다. 이는 또한,  onconnectionstatechange 이벤트 핸들러 속성을 통해 사용이 가능합니다. 
datachannel (en-US)
원격 피어가 RTCDataChannel (en-US)을 연결에 추가하게되면 RTCPeerConnection 객체에 전달합니다. 이는 또한, ondatachannel 이벤트 핸들러 속성을 통해 사용이 가능합니다.
icecandidate (en-US)
특정 ICE candidate가 원격 피어에 전달되도록 피어 연결에 요청을 보냅니다. 또한, onicecandidate 이벤트 핸들러 속성을 통해 사용이 가능합니다.
icecandidateerror (en-US)
ICE candidate를 수집하는 과정에서 에러가 발생하면 연결에 RTCPeerConnectionIceErrorEvent (en-US) 에러 타입을 보냅니다. 이는 또한, onicecandidateerror (en-US) 이벤트 핸들러 속성을 통해 사용이 가능합니다.
iceconnectionstatechange (en-US)
연결이 끊기는 상황과 같이 ICE 연결의 상태가 변하게되면 RTCPeerConnection에 전달합니다. 이는 또한, oniceconnectionstatechange (en-US) 이벤트 핸들러 속성을 통해 사용이 가능합니다.
icegatheringstatechange
iceGatheringState에 의해 반영되는 ICE 계층의 수집 상태가 변하면, RTCPeerConnection에 전달합니다. 계층의 수집 상태는 ICE 네고시에이션이 아직 시작을 안했거나 (new), 시작하고 candidate를 수집하는 중이거나 (gathering), 혹은 수집이 완료 (complete)된 상태로 나눠집니다. 이는 또한, onicegatheringstatechange 이벤트 핸들러 속성을 통해 사용이 가능합니다.
isolationchange
연결과 관련이 있는 하나의 MediaStreamTrack 객체가 있는 isolated 속성의 값이 변하면, RTCPeerConnection에 전달합니다. 만약 미디어 컨텐츠가 인증이 되어있지 않거나, 트랙이 cross-origin source (CORS)에서 오는 것이라면 트랙의 상태는 isolated이 됩니다. 이는 또한, onisolationchange 이벤트 핸들러 속성을 통해 사용이 가능합니다.
negotiationneeded (en-US)
ICE 연결의 네고시에이션 혹은 네고시에이션을 다시 수행해야 할 때, RTCPeerConnection에 전달됩니다. 이는 연결이 처음 생성되는 순간뿐만아니라 네트워크 조건이 바뀌게 되면 발생합니다. 리시버는 offer를 생성하고, 이를 다른 피어에 전달하기위해 응답해야합니다. 이는 또한, onnegotiationneeded (en-US) 이벤트 핸들러 속성을 통해 사용이 가능합니다.
signalingstatechange (en-US)
연결의 ICE 신호 상태가 변경되면 signalingstatechange이벤트를 RTCPeerConnection에 전달합니다. 이는 또한, onsignalingstatechange (en-US) 이벤트 핸들러 속성을 통해 사용이 가능합니다.
statsended
모니터링이 되던 statistics 객체가 삭제되면, statsended이벤트를 전달합니다. RTCStatsEvent는 삭제된 객체의 마지막 리포트를 포함합니다. 마지막 리포트를 전달받고나서 여러개의 객체가 삭제되었다면, 여러 객체에 대한 마지막 리포트를 포함합니다. 예를 들어 연결이 종료되거나 삭제되면, statistics 객체는 삭제됩니다. 
The statsended event is sent when a statistics object being monitored is deleted. The RTCStatsEvent includes the final report on the deleted object (or objects, if multiple objects have been deleted since the last report was delivered). A statistics object is deleted, for example, when the connection is closed and deleted.
Available as the onstatsended event handler property.
track (en-US)
연결을 구성하고 있는 RTCRtpReceiver (en-US) 인스턴스들 중 하나에 신규 트랙이 추가된 후에, track이벤트를 보냅니다. 이는 또한, ontrack 이벤트 핸들러 속성을 통해 사용이 가능합니다.
addstream (en-US) This is an obsolete API and is no longer guaranteed to work.
Sent when a new MediaStream (en-US) has been added to the connection. Instead of watching for this obsolete event, you should watch each for track (en-US) events; one is sent for each MediaStreamTrack added to the connection.
Available as the onaddstream (en-US) event handler property.
identityresult (en-US) This is an obsolete API and is no longer guaranteed to work.
In old versions of the WebRTC specification, this event was used to indicate that an identity assertion is available. Now, you should instead wait for a the promise returned by peerIdentity (en-US) to resolve with an identity.
Also available using the onidentityresult event handler property.
idpassertionerror (en-US) This is an obsolete API and is no longer guaranteed to work.
In old versions of the WebRTC specification, this event was used to indicate that an error occurred while attempting to generate an identity assertion. Now, you should instead wait for a the promise returned by peerIdentity (en-US) to be rejected with an error.
Also available as the onidpinsertionerror (en-US) event handler property.
idpvalidationerror (en-US) This is an obsolete API and is no longer guaranteed to work.
In old versions of the WebRTC specification, this event was used to indicate that an error occurred while attempting to validate an identity assertion. Now, you should instead wait for a the promise returned by peerIdentity (en-US) to be rejected with an error.
Also available using the onpeerdentity (en-US) event handler property.
peeridentity (en-US) This is an obsolete API and is no longer guaranteed to work.
In old versions of the WebRTC specification, this event was used to deliver a received identity. Now, you should instead wait for a the promise returned by peerIdentity (en-US) to resolve with an identity.
removestream (en-US) This is an obsolete API and is no longer guaranteed to work.
Sent to the RTCPeerConnection when a MediaStream (en-US) is removed from the connection. Instead of watching for this obsolete event, you should watch each stream for removetrack (en-US) events on each stream within the RTCPeerConnection.
Also available as the onaddstream (en-US) event handler property.

The RTCBundlePolicy enum defines string constants which are used to request a specific policy for gathering ICE candidates if the remote peer isn't compatible with the SDP BUNDLE standard for bundling multiple media streams on a single transport link.

In technical terms, a BUNDLE lets all media flow between two peers flow across a single 5-tuple; that is, from the same IP and port on one peer to the same IP and port on the other peer, using the same transport protocol.

상수명 설명
"balanced" On BUNDLE-aware connections, the ICE agent should gather candidates for all of the media types in use (audio, video, and data). Otherwise, the ICE agent should only negotiate one audio and video track on separate transports.
"max-compat" The ICE agent should gather candidates for each track, using separate transports to negotiate all media tracks for connections which aren't BUNDLE-compatible.
"max-bundle" The ICE agent should gather candidates for just one track. If the connection isn't BUNDLE-compatible, then the ICE agent should negotiate just one media track.

The RTCIceConnectionState enum defines the string constants used to describe the current state of the ICE agent and its connection to the ICE server (that is, the STUN or TURN server).

상수명 설명
"new" The ICE agent is gathering addresses or is waiting to be given remote candidates through calls to RTCPeerConnection.addIceCandidate() (or both).
"checking" The ICE agent has been given one or more remote candidates and is checking pairs of local and remote candidates against one another to try to find a compatible match, but has not yet found a pair which will allow the peer connection to be made. It's possible that gathering of candidates is also still underway.
"connected" A usable pairing of local and remote candidates has been found for all components of the connection, and the connection has been established. It's possible that gathering is still underway, and it's also possible that the ICE agent is still checking candidates against one another looking for a better connection to use.
"completed" The ICE agent has finished gathering candidates, has checked all pairs against one another, and has found a connection for all components.
"failed" The ICE candidate has checked all candidates pairs against one another and has failed to find compatible matches for all components of the connection. It is, however, possible that the ICE agent did find compatible connections for some components.
"disconnected" Checks to ensure that components are still connected failed for at least one component of the RTCPeerConnection. This is a less stringent test than "failed" and may trigger intermittently and resolve just as spontaneously on less reliable networks, or during temporary disconnections. When the problem resolves, the connection may return to the "connected" state.
"closed" The ICE agent for this RTCPeerConnection has shut down and is no longer handling requests.

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

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

The RTCIceTransportPolicy enum defines string constants which can be used to limit the transport policies of the ICE candidates to be considered during the connection process.

상수명 설명
"all" All ICE candidates will be considered.
"public" This is an obsolete API and is no longer guaranteed to work. Only ICE candidates with public IP addresses will be considered. Removed from the specification's May 13, 2016 working draft.
"relay" Only ICE candidates whose IP addresses are being relayed, such as those being passed through a TURN server, will be considered.

RTCPeerConnectionState enum은 RTCPeerConnection이 존재 할 수 도있는 상태에 대해 알려주는 문자열 상수를 정의합니다. 이 값들은 {domxref("RTCPeerConnection.connectionState", "connectionState")}} 속성에 의해 반홥됩니다. 근본적으로 이 상태는 연결에 의해 사용되는 모든 ICE 전송 (RTCIceTransport (en-US) 혹은 RTCDtlsTransport (en-US)의 타입)의 상태 집합을 나타냅니다. 

상수명 설명
"new"

연결의 ICE 전송 중 적어도 한 개가 새로 만들어진 "new" 상태이고,  그 외의 나머지는 다음의 상태 중 하나가 아니여야 합니다: "connecting", "checking", "failed", 혹은 "disconnected", 혹은  모든 연결의 전송이 끝났다는 "closed"상태.

"connecting" 하나 혹은 여러개의 ICE 전송이 현재 연결을 구성하는 중에 있음을 알려주는 값. 이는 RTCIceConnectionState"checking" 혹은 "connected"이며, 그 어떤 전송도 "failed"상태가 아니여야합니다. <<< Make this a link once I know where that will be documented
"connected" 연결에 의해 사용되는 모든 ICE 전송이 사용 중 ("connected" 혹은 "completed")이거나, 종료된 상태입니다. 추가적으로 최소 하나의 전송이 "connected" 혹은 "completed"입니다.
"disconnected" 연결에 대한 최소 한 개의 ICE 전송이 "disconnected"상태이고, 그 외의 다른 전송 상태는 "failed", "connecting", 혹은 "checking"이 아님을 알려주는 값. 
"failed"

연결에 대한 하나 혹은 여러개의 ICE 전송이 "failed"상태임을 알려주는 값.

"closed"

RTCPeerConnection 개통되지 않음을 알려주는 값.

2016년 5월 13일에 작성된 명세서의 초안에 따르면, 이 값은 RTCPeerConnectionState enum 안에 존재했었습니다. 따라서, signalingState (en-US)의 값을 통해 찾을 수 있습니다. 

The RTCRtcpMuxPolicy enum defines string constants which specify what ICE candidates are gathered to support non-multiplexed RTCP. <<<add a link to info about multiplexed RTCP.

상수명 설명
"negotiate" Instructs the ICE agent to gather both RTP and RTCP candidates. If the remote peer can multiplex RTCP, then RTCP candidates are multiplexed atop the corresponding RTP candidates. Otherwise, both the RTP and RTCP candidates are returned, separately.
"require" Tells the ICE agent to gather ICE candidates for only RTP, and to multiplex RTCP atop them. If the remote peer doesn't support RTCP multiplexing, then session negotiation fails.

The RTCSignalingState enum specifies the possible values of RTCPeerConnection.signalingState (en-US), which indicates where in the process of signaling the exchange of offer and answer the connection currently is.

상수명 설명
"stable" There is no ongoing exchange of offer and answer underway. This may mean that the RTCPeerConnection object is new, in which case both the localDescription and remoteDescription (en-US) are null; it may also mean that negotiation is complete and a connection has been established.
"have-local-offer" The local peer has called RTCPeerConnection.setLocalDescription(), passing in SDP representing an offer (usually created by calling RTCPeerConnection.createOffer() (en-US)), and the offer has been applied successfully.
"have-remote-offer" The remote peer has created an offer and used the signaling server to deliver it to the local peer, which has set the offer as the remote description by calling RTCPeerConnection.setRemoteDescription() (en-US).
"have-local-pranswer" The offer sent by the remote peer has been applied and an answer has been created (usually by calling RTCPeerConnection.createAnswer()) and applied by calling RTCPeerConnection.setLocalDescription(). This provisional answer describes the supported media formats and so forth, but may not have a complete set of ICE candidates included. Further candidates will be delivered separately later.
"have-remote-pranswer" A provisional answer has been received and successfully applied in response to an offer previously sent and established by calling setLocalDescription().
"closed" This is an obsolete API and is no longer guaranteed to work.

The connection is closed.

This value moved into the RTCPeerConnectionState enum in the May 13, 2016 draft of the specification, as it reflects the state of the RTCPeerConnection, not the signaling connection. You now detect a closed connection by checking for connectionState to be "closed" instead.

사양명 상태 설명
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'RTCPeerConnection' in that specification.
Candidate Recommendation 초기 정의.