# RtcPeerConnection class

Inheritance
  - Object
  - EventTarget
  - RtcPeerConnection
Annotations
  - @SupportedBrowser(SupportedBrowser.CHROME)
  - @Native("RTCPeerConnection,webkitRTCPeerConnection,mozRTCPeerConnection")

## Constructors

RtcPeerConnection(Map rtcIceServers, [ Map mediaConstraints ])
  factory

## Properties

iceConnectionState → String
  final
iceGatheringState → String
  final
localDescription → RtcSessionDescription
  final
onAddStream → Stream<MediaStreamEvent>
  Stream of `addstream` events handled by this RtcPeerConnection.
  read-only
onDataChannel → Stream<RtcDataChannelEvent>
  Stream of `datachannel` events handled by this RtcPeerConnection.
  read-only
onIceCandidate → Stream<RtcPeerConnectionIceEvent>
  Stream of `icecandidate` events handled by this RtcPeerConnection.
  read-only
onIceConnectionStateChange → Stream<Event>
  Stream of `iceconnectionstatechange` events handled by this RtcPeerConnection.
  read-only
onNegotiationNeeded → Stream<Event>
  Stream of `negotiationneeded` events handled by this RtcPeerConnection.
  read-only
onRemoveStream → Stream<MediaStreamEvent>
  Stream of `removestream` events handled by this RtcPeerConnection.
  read-only
onSignalingStateChange → Stream<Event>
  Stream of `signalingstatechange` events handled by this RtcPeerConnection.
  read-only
remoteDescription → RtcSessionDescription
  final
signalingState → String
  final
hashCode → int
  The hash code for this object. [...]
  read-only, inherited
on → Events
  This is an ease-of-use accessor for event streams which should only be used when an explicit accessor is not available.
  read-only, inherited
runtimeType → Type
  A representation of the runtime type of the object.
  read-only, inherited

## Methods

addIceCandidate(Object candidate, [ VoidCallback successCallback, RtcPeerConnectionErrorCallback failureCallback ]) → Future
addStream(MediaStream stream, [ Map mediaConstraints ]) → void
addTrack(MediaStreamTrack track, MediaStream streams) → RtcRtpSender
close() → void
createAnswer([Map options ]) → Future<RtcSessionDescription>
createDataChannel(String label, [ Map dataChannelDict ]) → RtcDataChannel
createDtmfSender(MediaStreamTrack track) → RtcDtmfSender
  @JSName('createDTMFSender')
createOffer([Map options ]) → Future<RtcSessionDescription>
getLegacyStats([MediaStreamTrack selector ]) → Future<RtcStatsResponse>
  Temporarily exposes _getStats and old getStats as getLegacyStats until Chrome fully supports new getStats API.
getLocalStreams() → List<MediaStream>
getReceivers() → List<RtcRtpReceiver>
getRemoteStreams() → List<MediaStream>
getSenders() → List<RtcRtpSender>
getStats() → Future<RtcStatsReport>
removeStream(MediaStream stream) → void
removeTrack(RtcRtpSender sender) → void
setConfiguration(Map configuration) → void
setLocalDescription(Map description) → Future
setRemoteDescription(Map description) → Future
addEventListener(String type, EventListener listener, [ bool useCapture ]) → void
  inherited
dispatchEvent(Event event) → bool
  inherited
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a non-existent method or property is accessed. [...]
  inherited
removeEventListener(String type, EventListener listener, [ bool useCapture ]) → void
  inherited
toString() → String
  Returns a string representation of this object.
  inherited

## Operators

operator ==(dynamic other) → bool
  The equality operator. [...]
  inherited

## Static Properties

supported → bool
  Checks if Real Time Communication (RTC) APIs are supported and enabled on the current platform.
  read-only

## Static Methods

generateCertificate(dynamic keygenAlgorithm) → Future

## Constants

addStreamEvent → const EventStreamProvider<MediaStreamEvent>
  Static factory designed to expose `addstream` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<MediaStreamEvent>('addstream')`
dataChannelEvent → const EventStreamProvider<RtcDataChannelEvent>
  Static factory designed to expose `datachannel` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<RtcDataChannelEvent>('datachannel')`
iceCandidateEvent → const EventStreamProvider<RtcPeerConnectionIceEvent>
  Static factory designed to expose `icecandidate` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<RtcPeerConnectionIceEvent>('icecandidate')`
iceConnectionStateChangeEvent → const EventStreamProvider<Event>
  Static factory designed to expose `iceconnectionstatechange` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<Event>('iceconnectionstatechange')`
negotiationNeededEvent → const EventStreamProvider<Event>
  Static factory designed to expose `negotiationneeded` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<Event>('negotiationneeded')`
removeStreamEvent → const EventStreamProvider<MediaStreamEvent>
  Static factory designed to expose `removestream` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<MediaStreamEvent>('removestream')`
signalingStateChangeEvent → const EventStreamProvider<Event>
  Static factory designed to expose `signalingstatechange` events to event handlers that are not necessarily instances of RtcPeerConnection. [...]
  `const EventStreamProvider<Event>('signalingstatechange')`