ryanberliner.com

The Basics of WebRTC, Explaining the Jargon

June 6th, 2025

I’ve been prototyping a project at work involving WebRTC. I found the vocabulary to be a distraction that prevented me from quickly understanding the basics. This brief post is how I would have liked to been introduced to WebRTC and it’s corresponding jargon.

We’ll start with the plain english example of how Joe and Mike would set up a video call with each other using WebRTC, which is a common use case of the technology. This example is the basis of this post. On desktop it will be interactively referenced and pinned to the top of the page.

You seem to be viewing this on small screen, its recommended it view on a desktop for the interactive experience.

Joe: My name is Joe, I'd like to start a video call with you, Mike

Mike: OK. My name is Mike and here are some ways you can connect with me directly, Joe.

Joe: Excellent, here is how you can connect with me directly, Mike

Mike: OK.

Now that Joe and Mike have exchanged their information, they'll be able to see and hear each other on a video call.

The dialog between Joe and Mike prior to the video call itself is called a negotiation. Each peer must configure their own peer connection to be able stream video and audio directly with each other.

My name is Joe, I'd like to start a video call

Joe creates an offer that he saves in his peer connection configuration.

with you, Mike

He sends this offer to Mike.

OK

Mike accepts Joe's offer and saves it in his peer connection configuration.

My name is Mike and here are some ways you can connect with me directly

Mike creates an answer to the offer he received from Joe. He saves it in his peer connection details. He also figures out a few ways that Joe might connect with him directly. These are Mike's ice candidates.

Joe

Mike sends his answer and his ice candidates to Joe.

Excellent

Joe saves Mikes answer and ice candidates in his own peer connection configuration.

here is how you can connect with me directly

Joe generates his ice candidates that explain how Mike might connect with him directly.

Mike

Joe sends his ice candidates to Mike.

OK

Mike saves Joe's ice candidates to his own peer connection configuration.

At this point both Joe and Mike have each others ice candidates, which they should have saved to their respective peer connection configurations. This allows peer to peer streaming of video, audio, or arbitrary data directly to each other to begin.

Questions you likely have

How is this negotiation happening?

If the negotiation is required to set up direct lines of connections, how are Joe and Mike communicating prior to those direct lines existing?

Most documentation states that negotiation can happen “however you’d like”. I’ll provide some examples to put it plainly.

…or maybe as the developer of the video chat app, you set up a server for them to communicate in realtime with each other.

The information sharing that occurs outside of the direct WebRTC peer to peer connection is called signalling. Sometimes people will refer to the negotiation process itself as signalling too. It’s common practice to set up a signalling server in which peers can signal to each other. Picture a simple websocket server, for example.

Know though that setting up a server is NOT required in the base case. My first “hello world” demo was simply me calling myself in another browser. For this demo, I copy and pasted messages to each browser using prompt() and alert(). Feeling the mechanics of the negotiation was important to me. Setting up automatic signaling was, once again, another distraction.

In some other “hello world” demos you’ll see folks use Broadcast Channels as their simple signalling mechanism. Anything goes, really, but in production for your typical call-type apps you’re most likely going to see a websocket signalling server.

Whats the point of WebRTC if I still need a server?

If you have to provide Joe and Mike realtime communication for signaling, why use WebRTC at all? Because of the benefits of direct, peer to peer communication.

Going beyond the basics

With this baseline knowledge, I’ve found the rest of the documentation (and even the jargon) online to be excellent. Everything I’ve run into since forming this understanding has been fairly clear.

If you’re a WebRTC pro and have corrections or suggestions to any of the above, please reach out and I’ll be sure to update the post to be accurate as possible.