SlideShare a Scribd company logo
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Janus: an open source and general purpose
WebRTC gateway (application) server
Lorenzo Miniero
@elminiero
25th January 2017, DevDay Napoli
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Outline
1 A brief introduction
2 Some context
WebRTC and standardization activities
3 Janus: a general purpose WebRTC gateway (application) server
Modular architecture: plugins and APIs
Deploying Janus: a few possible topologies
Monitoring and troubleshooting
4 Some practical examples
What is Janus used for today, and by whom?
5 Next steps
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What’s Meetecho?
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Recently got my Ph.D @ UniNA
• Proudly brewed in sunny Napoli(*)
, Italy
• Focus on real-time multimedia applications
• Web conferencing only, at first
• Then widened the scope to multimedia in general
• Strong perspective on standardization and open source
• WebRTC rulez!
• Several activities
• Consulting services
• Commercial support & licenses
• Streaming of live events (e.g., IETF, ACM SIGCOMM, ...)
• Products (conferencing, webinar, ...)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What’s Meetecho?
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Recently got my Ph.D @ UniNA
• Proudly brewed in sunny Napoli(*)
, Italy
• Focus on real-time multimedia applications
• Web conferencing only, at first
• Then widened the scope to multimedia in general
• Strong perspective on standardization and open source
• WebRTC rulez!
• Several activities
• Consulting services
• Commercial support & licenses
• Streaming of live events (e.g., IETF, ACM SIGCOMM, ...)
• Products (conferencing, webinar, ...)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What’s Meetecho?
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Recently got my Ph.D @ UniNA
• Proudly brewed in sunny Napoli(*)
, Italy
• Focus on real-time multimedia applications
• Web conferencing only, at first
• Then widened the scope to multimedia in general
• Strong perspective on standardization and open source
• WebRTC rulez!
• Several activities
• Consulting services
• Commercial support & licenses
• Streaming of live events (e.g., IETF, ACM SIGCOMM, ...)
• Products (conferencing, webinar, ...)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
((*)
“I can see your house, from here”)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Ok, ok, enough about you... what’s WebRTC about?
• Real-time media in a browser
• Up to some time ago, no standard solution!
• No interoperability
• Plugins needed to be installed anyway
WebRTC = Joint standardization efforts
• Internet Engineering Task Force (IETF)
• World Wide Web Consortium (W3C)
• RTCWEB (IETF)
• Real-Time Communication in WEB browsers WG
• Defines protocols and formats to use
• WEBRTC (W3C)
• Web Real-Time Communications WG
• Defines UI and API to access devices
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Ok, ok, enough about you... what’s WebRTC about?
• Real-time media in a browser
• Up to some time ago, no standard solution!
• No interoperability
• Plugins needed to be installed anyway
WebRTC = Joint standardization efforts
• Internet Engineering Task Force (IETF)
• World Wide Web Consortium (W3C)
• RTCWEB (IETF)
• Real-Time Communication in WEB browsers WG
• Defines protocols and formats to use
• WEBRTC (W3C)
• Web Real-Time Communications WG
• Defines UI and API to access devices
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Ok, ok, enough about you... what’s WebRTC about?
• Real-time media in a browser
• Up to some time ago, no standard solution!
• No interoperability
• Plugins needed to be installed anyway
WebRTC = Joint standardization efforts
• Internet Engineering Task Force (IETF)
• World Wide Web Consortium (W3C)
• RTCWEB (IETF)
• Real-Time Communication in WEB browsers WG
• Defines protocols and formats to use
• WEBRTC (W3C)
• Web Real-Time Communications WG
• Defines UI and API to access devices
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
WebRTC reference architecture
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
The WebRTC protocol suite
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
The WebRTC protocol suite
• Signalling (well, sort of) and Negotiation
• Javascript Session Establishment Protocol (JSEP)
• Session Description Protocol (SDP) adaptation
• Connection Establishment and NAT Traversal
• Session Traversal Utilities for NAT (STUN)
• Traversal Using Relay NAT (TURN)
• Interactive Connectivity Establishment (ICE)
• Media Transport and Control
• Real-time Transport (and Control) Protocol (RTP/RTCP)
• Secure Extensions to RTP (SRTP)
• Datagram Transport Layer Security (DTLS)
• Multimedia codecs
• Opus audio codec (MTI, Mandatory-to-implement)
• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)
• Generic Data
• WebRTC Data Channels (SCTP)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
The WebRTC protocol suite
• Signalling (well, sort of) and Negotiation
• Javascript Session Establishment Protocol (JSEP)
• Session Description Protocol (SDP) adaptation
• Connection Establishment and NAT Traversal
• Session Traversal Utilities for NAT (STUN)
• Traversal Using Relay NAT (TURN)
• Interactive Connectivity Establishment (ICE)
• Media Transport and Control
• Real-time Transport (and Control) Protocol (RTP/RTCP)
• Secure Extensions to RTP (SRTP)
• Datagram Transport Layer Security (DTLS)
• Multimedia codecs
• Opus audio codec (MTI, Mandatory-to-implement)
• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)
• Generic Data
• WebRTC Data Channels (SCTP)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
WebRTC reference architecture (again)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Involving a gateway/server (and applications)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Involving different technologies as well
“What is a WebRTC Gateway anyway?”
• https://webrtchacks.com/webrtc-gw/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Involving different technologies as well
“What is a WebRTC Gateway anyway?”
• https://webrtchacks.com/webrtc-gw/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Janus: a general purpose WebRTC gateway server
“In ancient Roman religion and
myth, Janus [..] is the god of
beginnings and transitions, and
thereby of gates, doors, passages,
endings and time. He is usually
depicted as having two faces, since
he looks to the future and to the
past.”
— http://en.wikipedia.org/wiki/Janus
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Janus: a general purpose WebRTC gateway server
• A door between the communications past and future
• Legacy technologies (the “past”)
• WebRTC (the “future”)
Janus
General purpose, open source WebRTC gateway
• https://github.com/meetecho/janus-gateway
• Demos and documentation: https://janus.conf.meetecho.com
• Community: https://groups.google.com/forum/#!forum/meetecho-janus
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too
• Users attach to plugins via the Janus core
• The core handles the WebRTC stuff
• Plugins route/manipulate the media/data
• Some proof of concept plugins implemented
• Echo Test
• Streaming (→ Plain RTP to WebRTC!)
• Video Room (→ Selective Forwarding Unit!)
• SIP Gateway (→ “Legacy” SIP!)
• ...
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too
• Users attach to plugins via the Janus core
• The core handles the WebRTC stuff
• Plugins route/manipulate the media/data
• Some proof of concept plugins implemented
• Echo Test
• Streaming (→ Plain RTP to WebRTC!)
• Video Room (→ Selective Forwarding Unit!)
• SIP Gateway (→ “Legacy” SIP!)
• ...
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too
• Users attach to plugins via the Janus core
• The core handles the WebRTC stuff
• Plugins route/manipulate the media/data
• Some proof of concept plugins implemented
• Echo Test
• Streaming (→ Plain RTP to WebRTC!)
• Video Room (→ Selective Forwarding Unit!)
• SIP Gateway (→ “Legacy” SIP!)
• ...
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too
• Users attach to plugins via the Janus core
• The core handles the WebRTC stuff
• Plugins route/manipulate the media/data
• Some proof of concept plugins implemented
• Echo Test
• Streaming (→ Plain RTP to WebRTC!)
• Video Room (→ Selective Forwarding Unit!)
• SIP Gateway (→ “Legacy” SIP!)
• ...
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Extensible Architecture and API
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Extensible Architecture and API
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Plugins as “bricks”
• Each plugin is a feature, not an application
• Application can be composed out of different features
• Features as “bricks” for a complex scenario
• A few examples...
• Multimedia conferencing with PSTN support
• Video Room (participants video & screen) + SIP (participants audio)
• Webinar with Q&A
• Video Room (screen) + Video Room (speakers) + Audio Bridge (questions)
• Social TV
• Streaming (TV channel) + Video Room (interaction)
• Contact center / Communication in social networks
• SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Plugins as “bricks”
• Each plugin is a feature, not an application
• Application can be composed out of different features
• Features as “bricks” for a complex scenario
• A few examples...
• Multimedia conferencing with PSTN support
• Video Room (participants video & screen) + SIP (participants audio)
• Webinar with Q&A
• Video Room (screen) + Video Room (speakers) + Audio Bridge (questions)
• Social TV
• Streaming (TV channel) + Video Room (interaction)
• Contact center / Communication in social networks
• SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Webinar with Q/A
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Social TV
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
How do I...
• ... use Janus in my web app?
• JavaScript library available (janus.{nojquery.}js)
• https://janus.conf.meetecho.com/docs/JS
• You can use HTTP or WebSockets transports
• Several demos available to start from
• ... use Janus, but keeping my API?
• Wrap the Janus API on the server side
• https://janus.conf.meetecho.com/docs/rest
• https://janus.conf.meetecho.com/docs/resources
• Effective way to control what users can do
• Also helps to orchestrate pool of Janus servers
• ... and allows you to use RabbitMQ, MQTT and UnixSockets transports
• ... ask questions, report issues, contribute, or do this/that?
• https://git.io/v2hWD (contributing guidelines)
• https://groups.google.com/forum/#!forum/meetecho-janus
• https://janus.conf.meetecho.com/docs/FAQ
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
How do I...
• ... use Janus in my web app?
• JavaScript library available (janus.{nojquery.}js)
• https://janus.conf.meetecho.com/docs/JS
• You can use HTTP or WebSockets transports
• Several demos available to start from
• ... use Janus, but keeping my API?
• Wrap the Janus API on the server side
• https://janus.conf.meetecho.com/docs/rest
• https://janus.conf.meetecho.com/docs/resources
• Effective way to control what users can do
• Also helps to orchestrate pool of Janus servers
• ... and allows you to use RabbitMQ, MQTT and UnixSockets transports
• ... ask questions, report issues, contribute, or do this/that?
• https://git.io/v2hWD (contributing guidelines)
• https://groups.google.com/forum/#!forum/meetecho-janus
• https://janus.conf.meetecho.com/docs/FAQ
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
How do I...
• ... use Janus in my web app?
• JavaScript library available (janus.{nojquery.}js)
• https://janus.conf.meetecho.com/docs/JS
• You can use HTTP or WebSockets transports
• Several demos available to start from
• ... use Janus, but keeping my API?
• Wrap the Janus API on the server side
• https://janus.conf.meetecho.com/docs/rest
• https://janus.conf.meetecho.com/docs/resources
• Effective way to control what users can do
• Also helps to orchestrate pool of Janus servers
• ... and allows you to use RabbitMQ, MQTT and UnixSockets transports
• ... ask questions, report issues, contribute, or do this/that?
• https://git.io/v2hWD (contributing guidelines)
• https://groups.google.com/forum/#!forum/meetecho-janus
• https://janus.conf.meetecho.com/docs/FAQ
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A few possible topologies
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Anything wrong? Check the Admin API!
• Requests/response API to interrogate Janus
• Query server capabilities
• Control some aspects (e.g., enable/disable debugging)
• Inspect handles and WebRTC “internals”
• What about asynchronous events? More on that in a minute!
http://www.meetecho.com/blog/understanding-the-janus-admin-api/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• Sample Event Handler forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• A couple of potentially interesting integrations
• Homer/HEP (originally conceived for SIP calls)
• Live stats collection via callstats.io
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• Sample Event Handler forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• A couple of potentially interesting integrations
• Homer/HEP (originally conceived for SIP calls)
• Live stats collection via callstats.io
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• Sample Event Handler forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• A couple of potentially interesting integrations
• Homer/HEP (originally conceived for SIP calls)
• Live stats collection via callstats.io
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• Sample Event Handler forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• A couple of potentially interesting integrations
• Homer/HEP (originally conceived for SIP calls)
• Live stats collection via callstats.io
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Stressing Janus: Jattack!
• Jattack = Janus Attack (or J’attacque )
• Controllable (via WebSockets) WebRTC client stack
• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still WIP, but already in a usable state
• Presented at IPTComm in Chicago just a few months ago!
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)
• Web conferencing and Webinars
• WebRTC-to-SIP gateway
• Streaming of live events (e.g., IETF meetings)
• Many folks/companies also using it in creative ways!
• E-learning
• Coworking
• Contact centers
• TV broadcasting and Social TV
• Surveillance systems
• E-health
• Home automation & Internet of Things
• Mobile devices, Raspberry Pis, drones, etc.
• New third-party tools are starting to come out
• https://janus.conf.meetecho.com/docs/resources
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)
• Web conferencing and Webinars
• WebRTC-to-SIP gateway
• Streaming of live events (e.g., IETF meetings)
• Many folks/companies also using it in creative ways!
• E-learning
• Coworking
• Contact centers
• TV broadcasting and Social TV
• Surveillance systems
• E-health
• Home automation & Internet of Things
• Mobile devices, Raspberry Pis, drones, etc.
• New third-party tools are starting to come out
• https://janus.conf.meetecho.com/docs/resources
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)
• Web conferencing and Webinars
• WebRTC-to-SIP gateway
• Streaming of live events (e.g., IETF meetings)
• Many folks/companies also using it in creative ways!
• E-learning
• Coworking
• Contact centers
• TV broadcasting and Social TV
• Surveillance systems
• E-health
• Home automation & Internet of Things
• Mobile devices, Raspberry Pis, drones, etc.
• New third-party tools are starting to come out
• https://janus.conf.meetecho.com/docs/resources
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Streaming IETF meetings: the “director” room
Remote participation completely WebRTC-based
• Slides as a video feed from the beamer
• Static video feed from the room
• Dynamic video feeds for remote speakers
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Meetecho: IETF meeting example
https://ietf.org/meeting/remote-participation.html
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Meetecho: IETF meeting example
https://ietf.org/meeting/remote-participation.html
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Meetecho: IETF meeting example
https://ietf.org/meeting/remote-participation.html
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Meetecho: IETF recordings
https://www.youtube.com/user/ietf
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A “silly” use case: The Jumping Sumo!
https://www.youtube.com/watch?v=isGSnMlKcss
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
A “silly” use case: The Jumping Sumo!
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
“Matrix wins Best of Show at WebRTC World!”
https://www.youtube.com/watch?v=OMzDklvDS3c
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
“Matrix wins Best of Show at WebRTC World!”
https://www.youtube.com/watch?v=NpBStIIq6fM
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Jangouts (for "Janus Hangouts" )
https://github.com/jangouts/jangouts
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
SylkServer (SIP/XMPP Application Server)
http://sylkserver.com/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
SylkServer (SIP/XMPP Application Server)
http://sylkserver.com/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Slack (team co-working)
https://webrtchacks.com/dear-slack/
https://webrtchacks.com/slack-webrtc-slacking/
https://slack.engineering/calls-is-it-you-or-is-it-me-f5d36749e8ed
https://webrtchacks.com/slack-video/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Mattermost (team co-working)
https://docs.mattermost.com/deployment/webrtc.html
https://github.com/mattermost/mattermost-webrtc
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Beam (videogame streaming)
https://beam.pro/
https://github.com/WatchBeam/ftl-sdk
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Lenovo’s AirClass (e-learning)
https://www.airclass.com
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Sqwiggle / Speak.io (team co-working)
https://www.sqwiggle.com
https://speak.io
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Sqwiggle / Speak.io (team co-working)
https://www.sqwiggle.com
https://speak.io
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Veeting rooms (web conferencing)
https://www.veeting.com
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
AliceX (let’s call it “virtual reality” )
https://www.alicex.com
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!
• Play with it, more testing is important
• Write your own applications/wrappers/plugins!
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!
• Play with it, more testing is important
• Write your own applications/wrappers/plugins!
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!
• Play with it, more testing is important
• Write your own applications/wrappers/plugins!
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!
• Play with it, more testing is important
• Write your own applications/wrappers/plugins!
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Next events
• FOSDEM 2017
• February 4-5, Bruxelles (Belgium)
• Talk on Event Handlers in Real-Time devroom on the 4th
, 17:10
• https://fosdem.org/2017/schedule/track/real_time_communications/
• WebRTC Stockholm
• February 16, Stockholm (Sweden)
• Talk on how we provide remote participation at the IETF with WebRTC
• https://www.meetup.com/WebRTC-Stockholm/
• IETF 98
• March 26-31, Chicago (USA)
• No talk, just hard work!!
• https://www.ietf.org/meeting/98/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Next events
• FOSDEM 2017
• February 4-5, Bruxelles (Belgium)
• Talk on Event Handlers in Real-Time devroom on the 4th
, 17:10
• https://fosdem.org/2017/schedule/track/real_time_communications/
• WebRTC Stockholm
• February 16, Stockholm (Sweden)
• Talk on how we provide remote participation at the IETF with WebRTC
• https://www.meetup.com/WebRTC-Stockholm/
• IETF 98
• March 26-31, Chicago (USA)
• No talk, just hard work!!
• https://www.ietf.org/meeting/98/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Next events
• FOSDEM 2017
• February 4-5, Bruxelles (Belgium)
• Talk on Event Handlers in Real-Time devroom on the 4th
, 17:10
• https://fosdem.org/2017/schedule/track/real_time_communications/
• WebRTC Stockholm
• February 16, Stockholm (Sweden)
• Talk on how we provide remote participation at the IETF with WebRTC
• https://www.meetup.com/WebRTC-Stockholm/
• IETF 98
• March 26-31, Chicago (USA)
• No talk, just hard work!!
• https://www.ietf.org/meeting/98/
DevDay
L. Miniero
Intro
WebRTC
Standardization
Janus
Modules and APIs
Deploying
Troubleshooting
Examples
A few examples
Next steps
Questions?
@elminiero
@meetecho

More Related Content

What's hot

Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
Silverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use ItSilverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use It
Venketash (Pat) Ramadass
 

What's hot (20)

Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Everything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed TracingEverything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed Tracing
 
Kafka At Scale in the Cloud
Kafka At Scale in the CloudKafka At Scale in the Cloud
Kafka At Scale in the Cloud
 
Microservices, DevOps & SRE
Microservices, DevOps & SREMicroservices, DevOps & SRE
Microservices, DevOps & SRE
 
Mock Server Using WireMock
Mock Server Using WireMockMock Server Using WireMock
Mock Server Using WireMock
 
Silverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use ItSilverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use It
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
The Future Of Web Frameworks
The Future Of Web FrameworksThe Future Of Web Frameworks
The Future Of Web Frameworks
 
History of-web-design
History of-web-designHistory of-web-design
History of-web-design
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
Observability, Distributed Tracing, and Open Source: The Missing Primer
Observability, Distributed Tracing, and Open Source: The Missing PrimerObservability, Distributed Tracing, and Open Source: The Missing Primer
Observability, Distributed Tracing, and Open Source: The Missing Primer
 
Aggregating API Services with an API Gateway (BFF)
Aggregating API Services with an API Gateway (BFF)Aggregating API Services with an API Gateway (BFF)
Aggregating API Services with an API Gateway (BFF)
 
Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1
 
Service Workers and APEX
Service Workers and APEXService Workers and APEX
Service Workers and APEX
 
When NOT to use Apache Kafka?
When NOT to use Apache Kafka?When NOT to use Apache Kafka?
When NOT to use Apache Kafka?
 
SonarQube Presentation.pptx
SonarQube Presentation.pptxSonarQube Presentation.pptx
SonarQube Presentation.pptx
 
Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...
 
Lessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxLessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptx
 

Viewers also liked

Greek lecture
Greek lectureGreek lecture
Greek lecture
rstrand
 
Ancient Greece
Ancient GreeceAncient Greece
Ancient Greece
rstrand
 
Bringing salman rushdi as a keynote speaker to nafsa conference
Bringing salman rushdi as a keynote speaker to nafsa conferenceBringing salman rushdi as a keynote speaker to nafsa conference
Bringing salman rushdi as a keynote speaker to nafsa conference
Suad Alhalwachi
 
Electra quiz prelims with answers
Electra quiz prelims with answersElectra quiz prelims with answers
Electra quiz prelims with answers
Rajarshi Choudhury
 

Viewers also liked (20)

A chatbot from scratch
A chatbot from scratchA chatbot from scratch
A chatbot from scratch
 
Unity: introduzione storica ed analisi di un microprogetto
Unity: introduzione storica ed analisi di un microprogettoUnity: introduzione storica ed analisi di un microprogetto
Unity: introduzione storica ed analisi di un microprogetto
 
OrientDB - Perché le tue applicazioni meritano un DB Multi-Model
OrientDB - Perché le tue applicazioni meritano un DB Multi-ModelOrientDB - Perché le tue applicazioni meritano un DB Multi-Model
OrientDB - Perché le tue applicazioni meritano un DB Multi-Model
 
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmIETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
 
OAuthorize yourself 2.0
OAuthorize yourself 2.0OAuthorize yourself 2.0
OAuthorize yourself 2.0
 
React js + ES6
React js + ES6React js + ES6
React js + ES6
 
La presenza su LinkedIn (ma non solo!)
La presenza su LinkedIn (ma non solo!)La presenza su LinkedIn (ma non solo!)
La presenza su LinkedIn (ma non solo!)
 
Sharod Shree
Sharod ShreeSharod Shree
Sharod Shree
 
14.305.makwana.jayshri
14.305.makwana.jayshri14.305.makwana.jayshri
14.305.makwana.jayshri
 
Bhabna Bhattacharya_RESEARCH
Bhabna Bhattacharya_RESEARCHBhabna Bhattacharya_RESEARCH
Bhabna Bhattacharya_RESEARCH
 
Janus International - Orientation
Janus International - OrientationJanus International - Orientation
Janus International - Orientation
 
Greek lecture
Greek lectureGreek lecture
Greek lecture
 
Ancient Greece
Ancient GreeceAncient Greece
Ancient Greece
 
Rotary Presentation 2:9:11
Rotary Presentation 2:9:11Rotary Presentation 2:9:11
Rotary Presentation 2:9:11
 
Alaska field School Presentation
Alaska field School PresentationAlaska field School Presentation
Alaska field School Presentation
 
Bringing salman rushdi as a keynote speaker to nafsa conference
Bringing salman rushdi as a keynote speaker to nafsa conferenceBringing salman rushdi as a keynote speaker to nafsa conference
Bringing salman rushdi as a keynote speaker to nafsa conference
 
Kachemak Bay NERR, Alaska Invasive Tunicate
Kachemak Bay NERR, Alaska Invasive TunicateKachemak Bay NERR, Alaska Invasive Tunicate
Kachemak Bay NERR, Alaska Invasive Tunicate
 
Electra quiz prelims with answers
Electra quiz prelims with answersElectra quiz prelims with answers
Electra quiz prelims with answers
 
A study of the multi dimensional themes of r.k.narayan’s the english teacher.
A study of the multi dimensional themes of r.k.narayan’s the english teacher.A study of the multi dimensional themes of r.k.narayan’s the english teacher.
A study of the multi dimensional themes of r.k.narayan’s the english teacher.
 
Islam main ahanat e rasool ki saza by dr mohsin usman nadvi
Islam main ahanat e rasool ki saza by dr mohsin usman nadviIslam main ahanat e rasool ki saza by dr mohsin usman nadvi
Islam main ahanat e rasool ki saza by dr mohsin usman nadvi
 

Similar to Janus: an open source and general purpose WebRTC (gateway) server

WebRTC Standards -- The 10 Minutes guide
WebRTC Standards -- The 10 Minutes guideWebRTC Standards -- The 10 Minutes guide
WebRTC Standards -- The 10 Minutes guide
Victor Pascual Ávila
 

Similar to Janus: an open source and general purpose WebRTC (gateway) server (20)

Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup Stockholm
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards Update
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
 
Janus @ RTC2017 Beijing
Janus @ RTC2017 BeijingJanus @ RTC2017 Beijing
Janus @ RTC2017 Beijing
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
 
WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017
 
Workshop oracle
Workshop oracleWorkshop oracle
Workshop oracle
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
 
WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC Testing
 
WebRTC standards update (Jul 2014)
WebRTC standards update (Jul 2014)WebRTC standards update (Jul 2014)
WebRTC standards update (Jul 2014)
 
WebRTC Standards -- The 10 Minutes guide
WebRTC Standards -- The 10 Minutes guideWebRTC Standards -- The 10 Minutes guide
WebRTC Standards -- The 10 Minutes guide
 
WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016
 

Recently uploaded

Fruit shop management system project report.pdf
Fruit shop management system project report.pdfFruit shop management system project report.pdf
Fruit shop management system project report.pdf
Kamal Acharya
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
AbrahamGadissa
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
Kamal Acharya
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 

Recently uploaded (20)

İTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering WorkshopİTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering Workshop
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Natalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in KrakówNatalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in Kraków
 
NO1 Pandit Amil Baba In Bahawalpur, Sargodha, Sialkot, Sheikhupura, Rahim Yar...
NO1 Pandit Amil Baba In Bahawalpur, Sargodha, Sialkot, Sheikhupura, Rahim Yar...NO1 Pandit Amil Baba In Bahawalpur, Sargodha, Sialkot, Sheikhupura, Rahim Yar...
NO1 Pandit Amil Baba In Bahawalpur, Sargodha, Sialkot, Sheikhupura, Rahim Yar...
 
Top 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering ScientistTop 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering Scientist
 
A CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdf
A CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdfA CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdf
A CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdf
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptxCloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
 
Construction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptxConstruction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptx
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
Fruit shop management system project report.pdf
Fruit shop management system project report.pdfFruit shop management system project report.pdf
Fruit shop management system project report.pdf
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
 
shape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxshape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptx
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Toll tax management system project report..pdf
Toll tax management system project report..pdfToll tax management system project report..pdf
Toll tax management system project report..pdf
 
Introduction to Machine Learning Unit-5 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-5 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-5 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-5 Notes for II-II Mechanical Engineering
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 

Janus: an open source and general purpose WebRTC (gateway) server

  • 1. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Janus: an open source and general purpose WebRTC gateway (application) server Lorenzo Miniero @elminiero 25th January 2017, DevDay Napoli
  • 2. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Outline 1 A brief introduction 2 Some context WebRTC and standardization activities 3 Janus: a general purpose WebRTC gateway (application) server Modular architecture: plugins and APIs Deploying Janus: a few possible topologies Monitoring and troubleshooting 4 Some practical examples What is Janus used for today, and by whom? 5 Next steps
  • 3. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What’s Meetecho? • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Recently got my Ph.D @ UniNA • Proudly brewed in sunny Napoli(*) , Italy • Focus on real-time multimedia applications • Web conferencing only, at first • Then widened the scope to multimedia in general • Strong perspective on standardization and open source • WebRTC rulez! • Several activities • Consulting services • Commercial support & licenses • Streaming of live events (e.g., IETF, ACM SIGCOMM, ...) • Products (conferencing, webinar, ...)
  • 4. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What’s Meetecho? • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Recently got my Ph.D @ UniNA • Proudly brewed in sunny Napoli(*) , Italy • Focus on real-time multimedia applications • Web conferencing only, at first • Then widened the scope to multimedia in general • Strong perspective on standardization and open source • WebRTC rulez! • Several activities • Consulting services • Commercial support & licenses • Streaming of live events (e.g., IETF, ACM SIGCOMM, ...) • Products (conferencing, webinar, ...)
  • 5. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What’s Meetecho? • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Recently got my Ph.D @ UniNA • Proudly brewed in sunny Napoli(*) , Italy • Focus on real-time multimedia applications • Web conferencing only, at first • Then widened the scope to multimedia in general • Strong perspective on standardization and open source • WebRTC rulez! • Several activities • Consulting services • Commercial support & licenses • Streaming of live events (e.g., IETF, ACM SIGCOMM, ...) • Products (conferencing, webinar, ...)
  • 6. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps ((*) “I can see your house, from here”)
  • 7. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Ok, ok, enough about you... what’s WebRTC about? • Real-time media in a browser • Up to some time ago, no standard solution! • No interoperability • Plugins needed to be installed anyway WebRTC = Joint standardization efforts • Internet Engineering Task Force (IETF) • World Wide Web Consortium (W3C) • RTCWEB (IETF) • Real-Time Communication in WEB browsers WG • Defines protocols and formats to use • WEBRTC (W3C) • Web Real-Time Communications WG • Defines UI and API to access devices
  • 8. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Ok, ok, enough about you... what’s WebRTC about? • Real-time media in a browser • Up to some time ago, no standard solution! • No interoperability • Plugins needed to be installed anyway WebRTC = Joint standardization efforts • Internet Engineering Task Force (IETF) • World Wide Web Consortium (W3C) • RTCWEB (IETF) • Real-Time Communication in WEB browsers WG • Defines protocols and formats to use • WEBRTC (W3C) • Web Real-Time Communications WG • Defines UI and API to access devices
  • 9. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Ok, ok, enough about you... what’s WebRTC about? • Real-time media in a browser • Up to some time ago, no standard solution! • No interoperability • Plugins needed to be installed anyway WebRTC = Joint standardization efforts • Internet Engineering Task Force (IETF) • World Wide Web Consortium (W3C) • RTCWEB (IETF) • Real-Time Communication in WEB browsers WG • Defines protocols and formats to use • WEBRTC (W3C) • Web Real-Time Communications WG • Defines UI and API to access devices
  • 10. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps WebRTC reference architecture
  • 11. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps The WebRTC protocol suite
  • 12. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps The WebRTC protocol suite • Signalling (well, sort of) and Negotiation • Javascript Session Establishment Protocol (JSEP) • Session Description Protocol (SDP) adaptation • Connection Establishment and NAT Traversal • Session Traversal Utilities for NAT (STUN) • Traversal Using Relay NAT (TURN) • Interactive Connectivity Establishment (ICE) • Media Transport and Control • Real-time Transport (and Control) Protocol (RTP/RTCP) • Secure Extensions to RTP (SRTP) • Datagram Transport Layer Security (DTLS) • Multimedia codecs • Opus audio codec (MTI, Mandatory-to-implement) • VP8 and H.264 video codecs (MTI, Mandatory-to-implement) • Generic Data • WebRTC Data Channels (SCTP)
  • 13. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps The WebRTC protocol suite • Signalling (well, sort of) and Negotiation • Javascript Session Establishment Protocol (JSEP) • Session Description Protocol (SDP) adaptation • Connection Establishment and NAT Traversal • Session Traversal Utilities for NAT (STUN) • Traversal Using Relay NAT (TURN) • Interactive Connectivity Establishment (ICE) • Media Transport and Control • Real-time Transport (and Control) Protocol (RTP/RTCP) • Secure Extensions to RTP (SRTP) • Datagram Transport Layer Security (DTLS) • Multimedia codecs • Opus audio codec (MTI, Mandatory-to-implement) • VP8 and H.264 video codecs (MTI, Mandatory-to-implement) • Generic Data • WebRTC Data Channels (SCTP)
  • 14. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps WebRTC reference architecture (again)
  • 15. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Involving a gateway/server (and applications)
  • 16. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Involving different technologies as well “What is a WebRTC Gateway anyway?” • https://webrtchacks.com/webrtc-gw/
  • 17. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Involving different technologies as well “What is a WebRTC Gateway anyway?” • https://webrtchacks.com/webrtc-gw/
  • 18. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Janus: a general purpose WebRTC gateway server “In ancient Roman religion and myth, Janus [..] is the god of beginnings and transitions, and thereby of gates, doors, passages, endings and time. He is usually depicted as having two faces, since he looks to the future and to the past.” — http://en.wikipedia.org/wiki/Janus
  • 19. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Janus: a general purpose WebRTC gateway server • A door between the communications past and future • Legacy technologies (the “past”) • WebRTC (the “future”) Janus General purpose, open source WebRTC gateway • https://github.com/meetecho/janus-gateway • Demos and documentation: https://janus.conf.meetecho.com • Community: https://groups.google.com/forum/#!forum/meetecho-janus
  • 20. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!) • “Application” logic implemented in plugins too • Users attach to plugins via the Janus core • The core handles the WebRTC stuff • Plugins route/manipulate the media/data • Some proof of concept plugins implemented • Echo Test • Streaming (→ Plain RTP to WebRTC!) • Video Room (→ Selective Forwarding Unit!) • SIP Gateway (→ “Legacy” SIP!) • ...
  • 21. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!) • “Application” logic implemented in plugins too • Users attach to plugins via the Janus core • The core handles the WebRTC stuff • Plugins route/manipulate the media/data • Some proof of concept plugins implemented • Echo Test • Streaming (→ Plain RTP to WebRTC!) • Video Room (→ Selective Forwarding Unit!) • SIP Gateway (→ “Legacy” SIP!) • ...
  • 22. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!) • “Application” logic implemented in plugins too • Users attach to plugins via the Janus core • The core handles the WebRTC stuff • Plugins route/manipulate the media/data • Some proof of concept plugins implemented • Echo Test • Streaming (→ Plain RTP to WebRTC!) • Video Room (→ Selective Forwarding Unit!) • SIP Gateway (→ “Legacy” SIP!) • ...
  • 23. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!) • “Application” logic implemented in plugins too • Users attach to plugins via the Janus core • The core handles the WebRTC stuff • Plugins route/manipulate the media/data • Some proof of concept plugins implemented • Echo Test • Streaming (→ Plain RTP to WebRTC!) • Video Room (→ Selective Forwarding Unit!) • SIP Gateway (→ “Legacy” SIP!) • ...
  • 24. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Extensible Architecture and API
  • 25. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Extensible Architecture and API
  • 26. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Plugins as “bricks” • Each plugin is a feature, not an application • Application can be composed out of different features • Features as “bricks” for a complex scenario • A few examples... • Multimedia conferencing with PSTN support • Video Room (participants video & screen) + SIP (participants audio) • Webinar with Q&A • Video Room (screen) + Video Room (speakers) + Audio Bridge (questions) • Social TV • Streaming (TV channel) + Video Room (interaction) • Contact center / Communication in social networks • SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)
  • 27. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Plugins as “bricks” • Each plugin is a feature, not an application • Application can be composed out of different features • Features as “bricks” for a complex scenario • A few examples... • Multimedia conferencing with PSTN support • Video Room (participants video & screen) + SIP (participants audio) • Webinar with Q&A • Video Room (screen) + Video Room (speakers) + Audio Bridge (questions) • Social TV • Streaming (TV channel) + Video Room (interaction) • Contact center / Communication in social networks • SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)
  • 28. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Webinar with Q/A
  • 29. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Social TV
  • 30. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps How do I... • ... use Janus in my web app? • JavaScript library available (janus.{nojquery.}js) • https://janus.conf.meetecho.com/docs/JS • You can use HTTP or WebSockets transports • Several demos available to start from • ... use Janus, but keeping my API? • Wrap the Janus API on the server side • https://janus.conf.meetecho.com/docs/rest • https://janus.conf.meetecho.com/docs/resources • Effective way to control what users can do • Also helps to orchestrate pool of Janus servers • ... and allows you to use RabbitMQ, MQTT and UnixSockets transports • ... ask questions, report issues, contribute, or do this/that? • https://git.io/v2hWD (contributing guidelines) • https://groups.google.com/forum/#!forum/meetecho-janus • https://janus.conf.meetecho.com/docs/FAQ
  • 31. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps How do I... • ... use Janus in my web app? • JavaScript library available (janus.{nojquery.}js) • https://janus.conf.meetecho.com/docs/JS • You can use HTTP or WebSockets transports • Several demos available to start from • ... use Janus, but keeping my API? • Wrap the Janus API on the server side • https://janus.conf.meetecho.com/docs/rest • https://janus.conf.meetecho.com/docs/resources • Effective way to control what users can do • Also helps to orchestrate pool of Janus servers • ... and allows you to use RabbitMQ, MQTT and UnixSockets transports • ... ask questions, report issues, contribute, or do this/that? • https://git.io/v2hWD (contributing guidelines) • https://groups.google.com/forum/#!forum/meetecho-janus • https://janus.conf.meetecho.com/docs/FAQ
  • 32. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps How do I... • ... use Janus in my web app? • JavaScript library available (janus.{nojquery.}js) • https://janus.conf.meetecho.com/docs/JS • You can use HTTP or WebSockets transports • Several demos available to start from • ... use Janus, but keeping my API? • Wrap the Janus API on the server side • https://janus.conf.meetecho.com/docs/rest • https://janus.conf.meetecho.com/docs/resources • Effective way to control what users can do • Also helps to orchestrate pool of Janus servers • ... and allows you to use RabbitMQ, MQTT and UnixSockets transports • ... ask questions, report issues, contribute, or do this/that? • https://git.io/v2hWD (contributing guidelines) • https://groups.google.com/forum/#!forum/meetecho-janus • https://janus.conf.meetecho.com/docs/FAQ
  • 33. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 34. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 35. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 36. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 37. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 38. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 39. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A few possible topologies
  • 40. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Anything wrong? Check the Admin API! • Requests/response API to interrogate Janus • Query server capabilities • Control some aspects (e.g., enable/disable debugging) • Inspect handles and WebRTC “internals” • What about asynchronous events? More on that in a minute! http://www.meetecho.com/blog/understanding-the-janus-admin-api/
  • 41. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps An asynchronous approach to monitoring/troubleshooting • Admin API is cool, but is request/response... • What about an asynchronous approach? • A new mechanism: Event Handlers • Core and plugins generate events • Custom modules can subscribe to and handle them • e.g., save to DB, send to external service, CDR, etc. • Sample Event Handler forwards JSON events via HTTP • Learning more with practical examples (node.js + DB) • http://www.meetecho.com/blog/event-handlers-a-practical-example/ • http://www.meetecho.com/blog/correlating-janus-event-handlers/ • A couple of potentially interesting integrations • Homer/HEP (originally conceived for SIP calls) • Live stats collection via callstats.io
  • 42. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps An asynchronous approach to monitoring/troubleshooting • Admin API is cool, but is request/response... • What about an asynchronous approach? • A new mechanism: Event Handlers • Core and plugins generate events • Custom modules can subscribe to and handle them • e.g., save to DB, send to external service, CDR, etc. • Sample Event Handler forwards JSON events via HTTP • Learning more with practical examples (node.js + DB) • http://www.meetecho.com/blog/event-handlers-a-practical-example/ • http://www.meetecho.com/blog/correlating-janus-event-handlers/ • A couple of potentially interesting integrations • Homer/HEP (originally conceived for SIP calls) • Live stats collection via callstats.io
  • 43. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps An asynchronous approach to monitoring/troubleshooting • Admin API is cool, but is request/response... • What about an asynchronous approach? • A new mechanism: Event Handlers • Core and plugins generate events • Custom modules can subscribe to and handle them • e.g., save to DB, send to external service, CDR, etc. • Sample Event Handler forwards JSON events via HTTP • Learning more with practical examples (node.js + DB) • http://www.meetecho.com/blog/event-handlers-a-practical-example/ • http://www.meetecho.com/blog/correlating-janus-event-handlers/ • A couple of potentially interesting integrations • Homer/HEP (originally conceived for SIP calls) • Live stats collection via callstats.io
  • 44. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps An asynchronous approach to monitoring/troubleshooting • Admin API is cool, but is request/response... • What about an asynchronous approach? • A new mechanism: Event Handlers • Core and plugins generate events • Custom modules can subscribe to and handle them • e.g., save to DB, send to external service, CDR, etc. • Sample Event Handler forwards JSON events via HTTP • Learning more with practical examples (node.js + DB) • http://www.meetecho.com/blog/event-handlers-a-practical-example/ • http://www.meetecho.com/blog/correlating-janus-event-handlers/ • A couple of potentially interesting integrations • Homer/HEP (originally conceived for SIP calls) • Live stats collection via callstats.io
  • 45. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Stressing Janus: Jattack! • Jattack = Janus Attack (or J’attacque ) • Controllable (via WebSockets) WebRTC client stack • Allows dynamic creation/monitoring of tons of WebRTC PeerConnections • Still WIP, but already in a usable state • Presented at IPTComm in Chicago just a few months ago!
  • 46. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What is Janus used for today, and by whom? • We use it ourselves for many things (obviously) • Web conferencing and Webinars • WebRTC-to-SIP gateway • Streaming of live events (e.g., IETF meetings) • Many folks/companies also using it in creative ways! • E-learning • Coworking • Contact centers • TV broadcasting and Social TV • Surveillance systems • E-health • Home automation & Internet of Things • Mobile devices, Raspberry Pis, drones, etc. • New third-party tools are starting to come out • https://janus.conf.meetecho.com/docs/resources
  • 47. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What is Janus used for today, and by whom? • We use it ourselves for many things (obviously) • Web conferencing and Webinars • WebRTC-to-SIP gateway • Streaming of live events (e.g., IETF meetings) • Many folks/companies also using it in creative ways! • E-learning • Coworking • Contact centers • TV broadcasting and Social TV • Surveillance systems • E-health • Home automation & Internet of Things • Mobile devices, Raspberry Pis, drones, etc. • New third-party tools are starting to come out • https://janus.conf.meetecho.com/docs/resources
  • 48. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What is Janus used for today, and by whom? • We use it ourselves for many things (obviously) • Web conferencing and Webinars • WebRTC-to-SIP gateway • Streaming of live events (e.g., IETF meetings) • Many folks/companies also using it in creative ways! • E-learning • Coworking • Contact centers • TV broadcasting and Social TV • Surveillance systems • E-health • Home automation & Internet of Things • Mobile devices, Raspberry Pis, drones, etc. • New third-party tools are starting to come out • https://janus.conf.meetecho.com/docs/resources
  • 49. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Streaming IETF meetings: the “director” room Remote participation completely WebRTC-based • Slides as a video feed from the beamer • Static video feed from the room • Dynamic video feeds for remote speakers
  • 50. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Meetecho: IETF meeting example https://ietf.org/meeting/remote-participation.html
  • 51. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Meetecho: IETF meeting example https://ietf.org/meeting/remote-participation.html
  • 52. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Meetecho: IETF meeting example https://ietf.org/meeting/remote-participation.html
  • 53. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Meetecho: IETF recordings https://www.youtube.com/user/ietf
  • 54. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A “silly” use case: The Jumping Sumo! https://www.youtube.com/watch?v=isGSnMlKcss
  • 55. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps A “silly” use case: The Jumping Sumo!
  • 56. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps “Matrix wins Best of Show at WebRTC World!” https://www.youtube.com/watch?v=OMzDklvDS3c
  • 57. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps “Matrix wins Best of Show at WebRTC World!” https://www.youtube.com/watch?v=NpBStIIq6fM
  • 58. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Jangouts (for "Janus Hangouts" ) https://github.com/jangouts/jangouts
  • 59. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps SylkServer (SIP/XMPP Application Server) http://sylkserver.com/
  • 60. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps SylkServer (SIP/XMPP Application Server) http://sylkserver.com/
  • 61. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Slack (team co-working) https://webrtchacks.com/dear-slack/ https://webrtchacks.com/slack-webrtc-slacking/ https://slack.engineering/calls-is-it-you-or-is-it-me-f5d36749e8ed https://webrtchacks.com/slack-video/
  • 62. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Mattermost (team co-working) https://docs.mattermost.com/deployment/webrtc.html https://github.com/mattermost/mattermost-webrtc
  • 63. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Beam (videogame streaming) https://beam.pro/ https://github.com/WatchBeam/ftl-sdk
  • 64. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Lenovo’s AirClass (e-learning) https://www.airclass.com
  • 65. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Sqwiggle / Speak.io (team co-working) https://www.sqwiggle.com https://speak.io
  • 66. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Sqwiggle / Speak.io (team co-working) https://www.sqwiggle.com https://speak.io
  • 67. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Veeting rooms (web conferencing) https://www.veeting.com
  • 68. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps AliceX (let’s call it “virtual reality” ) https://www.alicex.com
  • 69. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What to do next? • Finalize the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • Keep on improving and fixing things • Code cleanup, reference counters, new modules, ... • A monitoring/troubleshooting framework on top of Event Handlers • Test Test Test! • Jattack will greatly help here Help us improve this! • Play with it, more testing is important • Write your own applications/wrappers/plugins!
  • 70. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What to do next? • Finalize the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • Keep on improving and fixing things • Code cleanup, reference counters, new modules, ... • A monitoring/troubleshooting framework on top of Event Handlers • Test Test Test! • Jattack will greatly help here Help us improve this! • Play with it, more testing is important • Write your own applications/wrappers/plugins!
  • 71. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What to do next? • Finalize the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • Keep on improving and fixing things • Code cleanup, reference counters, new modules, ... • A monitoring/troubleshooting framework on top of Event Handlers • Test Test Test! • Jattack will greatly help here Help us improve this! • Play with it, more testing is important • Write your own applications/wrappers/plugins!
  • 72. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps What to do next? • Finalize the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • Keep on improving and fixing things • Code cleanup, reference counters, new modules, ... • A monitoring/troubleshooting framework on top of Event Handlers • Test Test Test! • Jattack will greatly help here Help us improve this! • Play with it, more testing is important • Write your own applications/wrappers/plugins!
  • 73. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Next events • FOSDEM 2017 • February 4-5, Bruxelles (Belgium) • Talk on Event Handlers in Real-Time devroom on the 4th , 17:10 • https://fosdem.org/2017/schedule/track/real_time_communications/ • WebRTC Stockholm • February 16, Stockholm (Sweden) • Talk on how we provide remote participation at the IETF with WebRTC • https://www.meetup.com/WebRTC-Stockholm/ • IETF 98 • March 26-31, Chicago (USA) • No talk, just hard work!! • https://www.ietf.org/meeting/98/
  • 74. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Next events • FOSDEM 2017 • February 4-5, Bruxelles (Belgium) • Talk on Event Handlers in Real-Time devroom on the 4th , 17:10 • https://fosdem.org/2017/schedule/track/real_time_communications/ • WebRTC Stockholm • February 16, Stockholm (Sweden) • Talk on how we provide remote participation at the IETF with WebRTC • https://www.meetup.com/WebRTC-Stockholm/ • IETF 98 • March 26-31, Chicago (USA) • No talk, just hard work!! • https://www.ietf.org/meeting/98/
  • 75. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Next events • FOSDEM 2017 • February 4-5, Bruxelles (Belgium) • Talk on Event Handlers in Real-Time devroom on the 4th , 17:10 • https://fosdem.org/2017/schedule/track/real_time_communications/ • WebRTC Stockholm • February 16, Stockholm (Sweden) • Talk on how we provide remote participation at the IETF with WebRTC • https://www.meetup.com/WebRTC-Stockholm/ • IETF 98 • March 26-31, Chicago (USA) • No talk, just hard work!! • https://www.ietf.org/meeting/98/
  • 76. DevDay L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Questions? @elminiero @meetecho