
Use git tags to align your local code with a specific video, clone the class repo, and checkout the tag to match the instructor’s changes without downloading zips.
See how I code with JavaScript, Node.js, and Socket.io while teaching practical coding approaches. Learn my VS Code workflow, terminal, and git habits, plus shortcuts and MDN references.
Learn why WebRTC offers faster, peer-to-peer video and audio directly in the browser, with stability, control, flexibility, price advantage, and cross-platform benefits over SDKs like Zoom.
Set up the project structure for a WebRTC video chat app by copying starter HTML and CSS files, integrating bootstrap, and outlining the DOM and script.js essentials.
Learn how to request audio and video with getUserMedia, using navigator.mediaDevices, set constraints, handle permission prompts, and obtain a media stream for a WebRTC app.
Learn to use the media recorder API with getUserMedia to capture a media stream, record it, and play back as a blob in a WebRTC context.
Update buttons explain managing start, stop, and share screen in a WebRTC video chat app, with color state changes and checks for a valid stream, recorder, and recordings.
Discover how to enumerate media devices with navigator.mediaDevices.enumerateDevices in WebRTC, identify audio input, audio output, and video input, and troubleshoot permissions and secure contexts using a localhost server.
Enumerate devices and populate audio input, audio output, and video input options for a WebRTC video chat app, then update the feed when the user selects a new device.
Demonstrates building a peer-to-peer video chat with WebRTC, guiding you through setting up a signaling server, Socket.IO, and multi-browser rigs to exchange media securely.
Explore how WebRTC signaling uses ICE, STUN, and TURN to traverse NAT and firewalls, exchanging SDP and ICE candidates via a signaling service like socket.io.
Explore how signaling enables two clients to find each other, exchange ice candidates and SDP, and set up a peer connection with ice servers and getUserMedia.
git checkout Set-Local-Description
git checkout Add-Local-Description
git checkout Add-Socketio
Build a signaling-based WebRTC video chat by exchanging offers and answers, handling ICE candidates, and wiring get user media, peer connections, and tracks with a Socket.IO server.
git checkout Emit-Offer
Learn how to send and handle ICE candidates in a WebRTC signaling flow by emitting candidates to the signaling server, tracking whether you offered, and updating offers with ICE candidates.
git checkout Load-Existing-Offers
git checkout Create-Answer
git checkout Signal-Error-Handling
git checkout Emitting-Answer
git checkout On-Answer-Response
git checkout Add-Ice
git checkout Apply-Ice
git checkout Add-Tracks
Learn to load a remote WebRTC feed on another device on the same network by using a local IP and HTTPS, and replacing localhost in code.
Set up a two-folder WebRTC project with a front end created by Create React App and a back end using express and socket.io, plus a certs folder for local https.
Set up a secure back-end with server.js using express, https, and socket.io on port 9000, including a test route and a socket connection.
git checkout Create-JWT
git checkout Add-React-Router
git checkout Join-Video
git checkout Starting-Components
git checkout Wire-Up-Redux
git checkout Add-Action-Buttons
git checkout GUM-Store-Stream
git checkout Create-Peer-Connection
git checkout Thinking-Functions
git checkout Abstract-Video-Audio-Buttons
git checkout Add-Video-Feed
Attach local video tracks to non-local streams by iterating streams, updating each peer connection, and dispatching Redux call-status updates to reflect the video state.
git checkout Enable-Disable-Video
git checkout Display-Local-Video-Inputs
git checkout Set-New-Video-Device
git checkout Replace-Tracks
git checkout Abstract-DropDown
git checkout Setup-Audio-Button
git checkout Switch-Audio-Devices
git checkout Start-Mute-Audio
git checkout Organize-Offers
git checkout Create-Offer-Tele
git checkout Add-Dashboard
Navigate bootstrap markup with containers, rows, and columns. Inspect the purple header and left rail, plus a two-row layout featuring dashboard, clients, appointments, files, analytics, and image placeholders.
git checkout Auth-Pro
git checkout Socket-Refactor
git checkout Reorg-Appt-Data
git checkout Pull-Appt-Data
git checkout Listen-Offers-Tele
git checkout Join-Video-Route
git checkout Call-Info-Pro
git checkout Create-Answer-Tele
Master the end-to-end WebRTC video chat flow by wiring get user media, creating peer connections with ICE and STUN, exchanging offers and answers via a signaling server.
git checkout Emit-Answer-Server
git checkout Listen-For-Answer
git checkout Emit-Ice-Candidates-Server
git checkout Ice-To-Clients
git checkout Add-Ice-PC
git checkout Add-Tracks-Victory
git checkout Tele-Bug-Fix-1
git checkout HangUp-Button
git checkout Replace-Tracks-Tele
Learn to spin up a free tier AWS EC2 Ubuntu server, configure SSH access with a key pair, and open HTTP/HTTPS ports to host your WebRTC video chat app.
Register a domain, point it to your AWS server with A records for root and www, then install Apache and configure it to serve content over http (ssl ready later).
Pull code from GitHub to your server, install node with PM2 and nodemon, and build a production React front end behind Apache with proper http/https domains.
Learn how to set up an Apache reverse proxy with virtual hosts for api and frontend, enable https with certbot/letsencrypt, and secure websocket traffic between port 80 and 9000.
Explore mesh, SFU, and MCU options for WebRTC video chats. Compare their scalability, advantages, and trade-offs for a course-ready solution.
TL;DR - you'll learn WebRTC in this course - how to pull a video feed and then setup a video chat between browsers with just JavaScript. The first section and a few later projects are front-end only, the connection section and later projects require Node.js and Socketio.
It's 2024. Whether because of the pandemic, chat bots, or cost savings, working remote is a thing. Telemedicine is a thing. Talking to people 6 time zones away is a thing. You can abstract your users from your app to Zoom because it always works, but you lose all control and tracking of the interaction.
Enter webRTC.
WebRTC is one of the browsers must mind blowing apis. It allows access to the mic, camera, even the screen AND to share them across a network socket DIRECTLY to another browser. No server (mostly) or other middleman to add bandwidth, bugs, and chaos.
Along with websockets, webRTC presents the video-side of browser real-time communication, bridging one of the last gaps in both human and web-based communication. There's a good chance if you're reading this, you've heard about webRTC. Maybe even done a tutorial on it. But how far did you get? In my experience, the vast majority of the material on the web goes no farther than a quick-start, zoom clone. You don't learn how anything works, never look at the docs, and are stuck at the end wondering what to do now. Is that all webRTC can do? The remaining shred of material is waaaaay over everyone's head. The fact that the webRTC was released about the same time as the websocket API and most developers still don't know how to use it is evidence of the gap.
This course is the first step to alleviate that! It is not a quick start guide to webRTC. There are loads of those all over the Internet. You should definitely look elsewhere if you are wanting a 10 minute intro to the 3-4 things you need to know to make a basic zoom clone. On the other hand, if you are looking to really learn one of the most awesome JavaScript APIs that no one seems to know, you should stick around. Like Express and other JavaScript/Node pieces, it's getting passed over in the wave to learn just enough to get to the term "full-stack developer." My main goal is to help you figure out how to go from being a good developer to a great developer. Understanding... not just knowing a few methods... WebRTC is part of that!
I first used webRTC in 2015 for a startup similar to telemedicine. I've been following since and have been frustrated that it hasn't gotten more mainstream notice due to Apple's reluctant support, but mostly because devs don't know it. It opens the way for so many improvements to existing applications and obvious groundwork for new ones. Let's change that :) Prepare to for a detailed look at webRTC and start going in-app real-time video/screen chat.
What we cover:
Front-end only portion
getUserMedia() - getting access to the mic and camera in the browser
playing the feed in a <video />
MediaStream and MediaStreamTrack - what makes up a video feed
Constraints - getSupportedConstraints() and getCapabilities() - seeing what this browser can do
applyConstraints - changing the feed on the fly
Recording video/audio and playing it back
Capturing the Screen for screen share and recording it
Changing input/output devices in your feed
Back-End required (node, socketio)
RTCPeerConnection - the heart of webRTC
Creating an offer and an answer
Setting RTCSessionDescription
The Signaling Process
Build a signaling server with socketio
Gathering ICE Candidates
Building a React app w/redux that uses webRTC