SlideShare a Scribd company logo
WEBRTC + SOCKET.IO
BUILDING A SKYPE-LIKE VIDEO CHAT WITH
NATIVE JAVASCRIPT
/MICHELE DI SALVATORE @MIKDISAL
Javascript Architect @ Objectway
Audio and video communication and peer-to-peer data
sharing through a web application
Native javascript (no plugins)
Open source
appear.in
HOW IS BORN
Global IP Solutions acquired by Google in 2010
Google open sourced the technologies
SUPPORTED BROWSERS AND PLATFORMS
IE AND SAFARI?
freeTemasys Plugin
JAVASCRIPT WEBRTC API
MediaStream
RTCPeerConnection
RTCDataChannel
MEDIASTREAM (AKA GETUSERMEDIA)
Acquiring audio and video
Can contain multiple 'tracks'
var constraints = {
video: {
mandatory: {
minWidth: 640,
minHeight: 360
}
};
function successCallback(stream) {
var video = document.querySelector("video");
video.src = window.URL.createObjectURL(stream);
}
function errorCallback(error) {
console.log("navigator.getUserMedia error: ", error);
}
Constraints controls the contents of the MediaStream
RTCPEERCONNECTION
Communicating audio and video
Signal processing
Codec handling
Peer to peer communication
Security
Bandwidth management
...
RTCDATACHANNEL
Communicating arbitrary data
Same API as WebSockets
Ultra-low latency
Unreliable or reliable
Secure
SIGNALING
Exchanging 'session description' objects
What formats I support, what I want to send
Network information for peer-to-peer setup
Any message mechanism and protocol
JSEP
JavaScript Session Establishment Protocol
RTCSESSIONDESCRIPTION EXAMPLE
v=0
o=- 7614219274584779017 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS
m=audio 1 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:W2TGCZw2NZHuwlnf
a=ice-pwd:xdQEccP40E+P0L5qTyzDgfmW
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:9c1AHz27dZ9xPI91YNfSlI67/EMkjHHIHORiC
a=rtpmap:111 opus/48000/2
...
P2P IN REAL WORLD
NAT & Firewalls?
STUN SERVER
Gives my public IP address
Simple server, cheap to run
Data flows peer-to-peer
STUN SERVER
TURN SERVER
Fallback for p2p failing
Data via server
Call works everywhere
STUN + TURN SERVERS
ICE
Interactive Connectivity Establishment
A framework to connect peers via UDP, enabling
RTCPeerConnection via STUN and TURN server
WEBRTC SECURITY
On Chrome only via https
Encryption for media and data
Sandboxed
WEBRTC LIBRARIES & CO.
by
by
by
by
...
adapter.js webrtc
rtc-everywhere contra
SimpleWebRTC &Yet
RTCMultiConnection Muaz Khan
RTCMULTICONNECTION
A javascript wrapper library supporting
approximately all possible peer-to-peer
features.
WEBRTC EXPERIMENTS
Tons of open source experiments based on
RTCMultiConnection:
webrtc-experiment.com
WEBSOCKETS
Standardized in 2011
Interactive communication session between browser and
server
Event driven
Sending strings and binary data
WEBSOCKETS BROWSER SUPPORT
All and IE10+
ajax polling as fallback
SOCKET.IO
A popular open source library with client and server
implementations
Server side written in Node and easy to start
var server = require('http').createServer();
var io = require('socket.io')(server);
io.on('connection', function(socket){
socket.on('hi!', function(data){
socket.emit('a-message', {hello: 'world'});
});
socket.on('disconnect', function(){});
});
server.listen(3000);
SOCKET.IO CLIENT
var socket = io.connect('http://localhost:3000/');
socket.on('connect', function () {
socket.emit('hi!');
});
socket.on('a-message', function (data) {
console.log(data.hello);
});
GOAL
A SKYPE LIKE CHAT
MAIN ISSUES
WebRTC architecture like IRC
rooms with shared chat: text, video and data
direct chat: only one to one
room managed by initiator
conversation type can change without agreement: text to
video
IMPLEMENTATION
STEP 1
UserA is logged in and is connected to the socket server
STEP 2
The app sends a "presence" event to other users through
the socket
The server forwards the message only to user's contacts
Each present user replies with the same "presence" event
SOCKET.IO FORWARD ROLE
STEP 3
Each present user replies with the same "presence" event
STEP 4
When a user receives a "presence" event, it automatically
knows that the sender is online
Also the server sends the “presence” event to all, when a
user socket is disconnected
STEP 5
UserA starts a conversation and the app creates the webrtc
connection
STEP 6
UserA sends a message via webrtc
STEP 7
UserB receives a notification
STEP 8
UserB starts writing a message
STEP 9
UserA receives the "is typing" info sent via webrtc
STEP 10
UserA starts a video call sending a request to UserB via
socket
STEP 11
UserB receives the request and accepting starts a video call
via webrtc
STEP 12
The 2 users can video chat via webrtc
Each user can close the video at any time or start a text chat
STEP 13
A user can send text messages also
STEP 14
A user can start an audio chat in the same way as a video
chat
chat
BEHIND THE SCENES
WHERE IS WEBRTC?
Behind this actions
chat messages
video / audio call
"is typing" info
AND THE OTHERS?
via WebSockets
presence
video / audio initialization
all status infos
THAT'S ALL!
THANK YOU ALL
/Michele Di Salvatore @MikDiSal

More Related Content

PPTX
Tcpdump
PDF
Favor composition over inheritance
PPTX
SITE TO SITE IPSEC VPN TUNNEL B/W CISCO ROUTERS
PPTX
CEC356 SPEECH PROCESSING.pptx
PPT
Class 5 - PHP Strings
PDF
Understanding Non Blocking I/O with Python
PPT
Tcpdump
Favor composition over inheritance
SITE TO SITE IPSEC VPN TUNNEL B/W CISCO ROUTERS
CEC356 SPEECH PROCESSING.pptx
Class 5 - PHP Strings
Understanding Non Blocking I/O with Python

What's hot (20)

PPT
Active Directory Training
PPT
DOM and SAX
PPT
Servlet life cycle
PDF
Terraspace, the definitive terraform framework
PDF
Why and How to Use Virtual DOM
PPT
URL Class in JAVA
PPTX
PHP FUNCTIONS
PPT
CCNA IP Addressing
PPS
Lesson 2: Subnetting basics
PDF
Wi-Fi security – WEP, WPA and WPA2
PPTX
CCNA Wireless Lan (WLAN)
PDF
CCNAv5 - S2: Chapter5 Inter Vlan Routing
PPTX
DHCP Snooping
PDF
Network commands
PPT
Active directory
PDF
jQuery - Chapter 3 - Effects
DOC
Huawei Router Basic Configuration Command
PPTX
Disaster Recovery using Spectrum Scale Active File Management
PDF
Scaling up task processing with Celery
Active Directory Training
DOM and SAX
Servlet life cycle
Terraspace, the definitive terraform framework
Why and How to Use Virtual DOM
URL Class in JAVA
PHP FUNCTIONS
CCNA IP Addressing
Lesson 2: Subnetting basics
Wi-Fi security – WEP, WPA and WPA2
CCNA Wireless Lan (WLAN)
CCNAv5 - S2: Chapter5 Inter Vlan Routing
DHCP Snooping
Network commands
Active directory
jQuery - Chapter 3 - Effects
Huawei Router Basic Configuration Command
Disaster Recovery using Spectrum Scale Active File Management
Scaling up task processing with Celery
Ad

Viewers also liked (20)

PDF
Team working e team building
PDF
A jQuery for WebRTC
PPTX
Server-side WebRTC Infrastructure
PDF
WebRTC with Java
PDF
To Build or Not to Build Your WebRTC Infrastructure
PDF
A Practical Guide to WebRTC
PDF
WebRTC on Mobile
PDF
Il Team Player 20.20 - Le caratteristiche della persona che tutti i Team cercano
PDF
Formazione e Team building
PPT
La gestione del team work
PDF
Team building
PDF
Baby Steps: A WebRTC Tutorial
PDF
Lavorare in team
PPTX
Setup ephemeral password for TURN, Learn RTC in less than 200 Lines of code
PPT
TEAM BUILDING POWERPOINT
PPTX
How I built a WebRTC enabled website in 20 minutes!
PPTX
Learn node.js by building projects
PPTX
Web rtc, Media stream, Peer connection, Setting up STUN and TURN on Linux and...
PDF
Socket.IO
Team working e team building
A jQuery for WebRTC
Server-side WebRTC Infrastructure
WebRTC with Java
To Build or Not to Build Your WebRTC Infrastructure
A Practical Guide to WebRTC
WebRTC on Mobile
Il Team Player 20.20 - Le caratteristiche della persona che tutti i Team cercano
Formazione e Team building
La gestione del team work
Team building
Baby Steps: A WebRTC Tutorial
Lavorare in team
Setup ephemeral password for TURN, Learn RTC in less than 200 Lines of code
TEAM BUILDING POWERPOINT
How I built a WebRTC enabled website in 20 minutes!
Learn node.js by building projects
Web rtc, Media stream, Peer connection, Setting up STUN and TURN on Linux and...
Socket.IO
Ad

Similar to WebRTC + Socket.io: building a skype-like video chat with native javascript (20)

PPT
Introduction To Webrtc
PDF
Nodejs and WebSockets
PDF
WebRTC
ODP
Networking and Data Access with Eqela
PDF
WebRTC: Bring real-time to the web - Barcamp Saigon 2012
PDF
JooinK - DevFest Piemonte 2013
PDF
WebRTC 101 - How to get started building your first WebRTC application
PDF
WebRTC - Brings Real-Time to the Web
PDF
React Native EU 2021 - Creating a VoIP app in React Native - the beginner's g...
PPT
Pushing the Boundaries of Sencha and HTML5′s WebRTC
PDF
How to create a real time chat application using socket.io, golang, and vue js-
PDF
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
PPTX
DevCon5 (July 2014) - Acision SDK
PPTX
Oracle JET and WebSocket
PPT
HTML5 WebSocket: The New Network Stack for the Web
PPTX
Webrtc in Real world
PPTX
Meego Widget Development using Qt WRT @iRajLal
PDF
Introduction to HTML5
KEY
Node worshop Realtime - Socket.io
PPTX
HTML5 WebWorks
Introduction To Webrtc
Nodejs and WebSockets
WebRTC
Networking and Data Access with Eqela
WebRTC: Bring real-time to the web - Barcamp Saigon 2012
JooinK - DevFest Piemonte 2013
WebRTC 101 - How to get started building your first WebRTC application
WebRTC - Brings Real-Time to the Web
React Native EU 2021 - Creating a VoIP app in React Native - the beginner's g...
Pushing the Boundaries of Sencha and HTML5′s WebRTC
How to create a real time chat application using socket.io, golang, and vue js-
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
DevCon5 (July 2014) - Acision SDK
Oracle JET and WebSocket
HTML5 WebSocket: The New Network Stack for the Web
Webrtc in Real world
Meego Widget Development using Qt WRT @iRajLal
Introduction to HTML5
Node worshop Realtime - Socket.io
HTML5 WebWorks

Recently uploaded (20)

PPTX
ai tools demonstartion for schools and inter college
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
System and Network Administraation Chapter 3
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Nekopoi APK 2025 free lastest update
PDF
medical staffing services at VALiNTRY
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
history of c programming in notes for students .pptx
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Softaken Excel to vCard Converter Software.pdf
ai tools demonstartion for schools and inter college
VVF-Customer-Presentation2025-Ver1.9.pptx
Design an Analysis of Algorithms II-SECS-1021-03
Which alternative to Crystal Reports is best for small or large businesses.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Designing Intelligence for the Shop Floor.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Operating system designcfffgfgggggggvggggggggg
System and Network Administraation Chapter 3
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Nekopoi APK 2025 free lastest update
medical staffing services at VALiNTRY
Understanding Forklifts - TECH EHS Solution
history of c programming in notes for students .pptx
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
L1 - Introduction to python Backend.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
Softaken Excel to vCard Converter Software.pdf

WebRTC + Socket.io: building a skype-like video chat with native javascript