Did you know? All Video & Audio API plans include a $100 free usage credit each month so you can build and test risk-free. View Plans ->

WebRTC For The Brave

Creating a RTCPeerConnection

In this part, you'll how to create and close a peer connection for a WebRTC call with RTCPeerConnection.

What is an RTCPeerConnection?

The RTCPeerConnection API represents a WebRTC connection between multiple peers, for instance, the local computer and a remote peer and it’s one of the essential concepts in the WebRTC call.

RTCPeerConnection allows you to establish a WebRTC calls to stream video and audio, and exchange data, and provide all necessary functionalities to make WebRTC calls, such as adding and displaying MediaStreamTracks (video and audio), creating SDP (session description protocol), and listening to ICE (Interactive Connectivity Establishment) candidates.

In this tutorial, you’ll cover each step one by one and create a peer connection between two local and remote peers.

Create a Peer Connection

Basically, you can create a WebRTC peer connection using RTCPeerConnection API like the code below:

jsx
            const peerConnection = new RTCPeerConnection();
        

You can also create a WebRTC peer connection by giving a configuration parameter, which provides the options to be set by specifying the new ICE server and its credentials like the example code below:

jsx
            const rtcConfig = {
  iceServers: [
    {
      urls: 'stun:stun.1.google.com:19302'
    },
  ],
};

let peerConnection = new RTCPeerConnection(rtcConfig);

peerConnection
  .createOffer({ iceRestart: true })
  .then((offer) => pc1.setLocalDescription(offer))
  ..
        

This example creates a new RTCPeerConnection which will use a STUN server at stun.1.google.com:19302 to negotiate connections. Then the ICE negotiation is restarted by invoking RTCPeerConnection.createOffer() method and giving true for the iceRestart option.

Close a Peer Connection

Once you don’t need to maintain the peer connection anymore, you can close the WebRTC call with RTCPeerConnection.close() method. This method terminates the entire active streams and ongoing ICE processing and releases all connectivities and resources the connection uses.