The document discusses Janus, an open-source WebRTC gateway server. It introduces event handlers, a new type of plugin that allows asynchronous monitoring of Janus. Event handlers can subscribe to events from the core and plugins, like session creation/destruction or PeerConnection state changes. This provides more visibility than polling the Admin API. The document demonstrates integrating Homer, a monitoring framework, as an event handler plugin. It also previews demos of the EchoTest and VideoRoom plugins using event handlers.
An overview of the challenges to get real-time data and stats to HOMER/HEPIC for post-mortem and live troubleshooting, with the streaming of IETF meetings as a real use case.
Monitoring as an entry point for collaborationJulien Pivotto
In the last years, we have been building complex stacks, made from lots of components. All of this backed by multiple teams. This talk will present how you can use monitoring to look at the business side and have everyone looking at the same dashboards, making cooperation a reality.
ObserveIT Software acts like a "security camera" for your servers, it will allow you to watch with full video playback every step your 3rdparty contractors, developers or IT administrators takes on your servers – exactly as they happen.
Watch full video playback of Remote Desktop, Citrix and VMWare Sessions
View sessions in real time or from historical recordings
Quickly find any user action, without playing back the entire session
The e-commerce is one of the main points of modern software. The e-commerce sector is growing about 15% annually, which is why it deserves special attention from software engineers. Speaking of e-commerce and open source at once is not easy. For many years we have identified the concept with pain and despair, so we must work urgently to change the way we understand it should be. What are the important points to consider? Where do we find the line between architecture and pragmatism? Are we walking in the right direction? How can Symfony help in this?
HFM API Deep Dive – Making a Better Financial Management ClientCharles Beyer
While the Financial Management Client program that ships with HFM provides key functionality is quite reliable, there are many areas where it could be improved. Fortunately for us, the Financial Management Client is a great example of a program that implements the HFM COM API as many of the program’s features are directly attributable to API functions. Due to this fact, we can focus on adding value without having to completely reinvent the wheel.
This session, which builds off of a previous API presentation, will further walk you through a complete program build utilizing HFM COM API functionality and Microsoft Visual Studio .NET. Fully working code will be provided as well for viewers.
Creating a World-Class RESTful Web Services APIDavid Keener
Companies like Amazon, Google and Yahoo have published web services API's that empower developers to create mash-ups, add-ons and full-scale applications. The creation of such API's, however, is not exclusively the domain of large, multi-national corporations. Learn how to architect, build and field a well-designed and scalable RESTful web services API that will allow your business to leverage the capabilities of the developer community. This presentation includes real-life examples from the Grab Networks RESTful API, which provides access to information about the hundreds of thousands of news videos available through Grab Networks' distribution network.
Building a microservice architecture for a 100mio# revenue companyProjectAcom
Project A's CTO Stephan Schulze presents in his talks his learnings when building a mircroservice architecture for a 100mio+ revenue company.
The talk was held at codetalks conference in Berlin, April 2017 by Stephan Schulze
(Twitter: @nahpeps)
In the realm of real-time applications, Large Language Models (LLMs) have long dominated language-centric tasks, while tools like OpenCV have excelled in the visual domain. However, the future (maybe) lies in the fusion of LLMs and deep learning, giving birth to the revolutionary concept of Large Action Models (LAMs).
Imagine a world where AI not only comprehends language but mimics human actions on technology interfaces. For example, the Rabbit r1 device presented at CES 2024, driven by an AI operating system and LAM, brings this vision to life. It executes complex commands, leveraging GUIs with unprecedented ease.
In this presentation, join me on a journey as a software engineer tinkering with WebRTC, Janus, and LLM/LAMs. Together, we’ll evaluate the current state of these AI technologies, unraveling the potential they hold for shaping the future of real-time applications.
An overview of the challenges to get real-time data and stats to HOMER/HEPIC for post-mortem and live troubleshooting, with the streaming of IETF meetings as a real use case.
Monitoring as an entry point for collaborationJulien Pivotto
In the last years, we have been building complex stacks, made from lots of components. All of this backed by multiple teams. This talk will present how you can use monitoring to look at the business side and have everyone looking at the same dashboards, making cooperation a reality.
ObserveIT Software acts like a "security camera" for your servers, it will allow you to watch with full video playback every step your 3rdparty contractors, developers or IT administrators takes on your servers – exactly as they happen.
Watch full video playback of Remote Desktop, Citrix and VMWare Sessions
View sessions in real time or from historical recordings
Quickly find any user action, without playing back the entire session
The e-commerce is one of the main points of modern software. The e-commerce sector is growing about 15% annually, which is why it deserves special attention from software engineers. Speaking of e-commerce and open source at once is not easy. For many years we have identified the concept with pain and despair, so we must work urgently to change the way we understand it should be. What are the important points to consider? Where do we find the line between architecture and pragmatism? Are we walking in the right direction? How can Symfony help in this?
HFM API Deep Dive – Making a Better Financial Management ClientCharles Beyer
While the Financial Management Client program that ships with HFM provides key functionality is quite reliable, there are many areas where it could be improved. Fortunately for us, the Financial Management Client is a great example of a program that implements the HFM COM API as many of the program’s features are directly attributable to API functions. Due to this fact, we can focus on adding value without having to completely reinvent the wheel.
This session, which builds off of a previous API presentation, will further walk you through a complete program build utilizing HFM COM API functionality and Microsoft Visual Studio .NET. Fully working code will be provided as well for viewers.
Creating a World-Class RESTful Web Services APIDavid Keener
Companies like Amazon, Google and Yahoo have published web services API's that empower developers to create mash-ups, add-ons and full-scale applications. The creation of such API's, however, is not exclusively the domain of large, multi-national corporations. Learn how to architect, build and field a well-designed and scalable RESTful web services API that will allow your business to leverage the capabilities of the developer community. This presentation includes real-life examples from the Grab Networks RESTful API, which provides access to information about the hundreds of thousands of news videos available through Grab Networks' distribution network.
Building a microservice architecture for a 100mio# revenue companyProjectAcom
Project A's CTO Stephan Schulze presents in his talks his learnings when building a mircroservice architecture for a 100mio+ revenue company.
The talk was held at codetalks conference in Berlin, April 2017 by Stephan Schulze
(Twitter: @nahpeps)
In the realm of real-time applications, Large Language Models (LLMs) have long dominated language-centric tasks, while tools like OpenCV have excelled in the visual domain. However, the future (maybe) lies in the fusion of LLMs and deep learning, giving birth to the revolutionary concept of Large Action Models (LAMs).
Imagine a world where AI not only comprehends language but mimics human actions on technology interfaces. For example, the Rabbit r1 device presented at CES 2024, driven by an AI operating system and LAM, brings this vision to life. It executes complex commands, leveraging GUIs with unprecedented ease.
In this presentation, join me on a journey as a software engineer tinkering with WebRTC, Janus, and LLM/LAMs. Together, we’ll evaluate the current state of these AI technologies, unraveling the potential they hold for shaping the future of real-time applications.
Part 2 / 4: How to Intelligently Process and Deliver Real-Time Data with FME ...Safe Software
Find out how to instantly deliver data to users exactly how it's needed. We'll demonstrate how to process real-time and sensor data for use in operations. You'll also see how to send notifications and stream data to users in a format that's useful to them. Plus, see how you can apply business logic to incoming data and trigger different tasks based on results.
This session is for Operations Manager (SCOM) administrators, who like to learn new tricks and tips for our daily work. Christian Heitkamp is SCOM a veteran developing and architecting SCOM solutions. This slides give details on SCOM security to review what you should be aware when using RunAs Accounts both on Linux and Windows.
Another day, another buzzword in the world of software development! ‘Microservices’ is a new approach to structuring server-side software. But is it really new? In this talk I’ll walk you through the birth and ‘raison d’etre’ of microservices and tell about pro’s and con’s of the approach.
Having laid the foundation, we will take a look at best-practices and patterns for building micro service architectures and combine this with a tour of current technologies and development tools.
Finally, I will take a quick look at the future and discuss some of the remaining challenges. All parts of the presentation will be accompanied by structural examples based on a real ecommerse system.
Design Microservice Architectures the Right WayC4Media
Video and slides synchronized, mp3 and slide download available at URL https://bit.ly/2O7BN8T.
Michael Bryzek highlights specific key decisions that very directly impact the quality and maintainability of a microservice architecture, covering infrastructure, continuous deployment, communication, event streaming, language choice and more, all to ensure that teams and systems remain productive and scale. Filmed at qconnewyork.com.
Michael Bryzek is the CTO and co-founder of Flow Commerce, an enterprise SAAS platform that is the world’s most advanced solution for global ecommerce. Prior, he was the cofounder and CTO of Gilt Groupe, an innovative online shopping destination offering.
What is going on? Application Diagnostics on Azure - Copenhagen .NET User GroupMaarten Balliauw
We all like building and deploying cloud applications. But what happens once that’s done? How do we know if our application behaves like we expect it to behave? Of course, logging! But how do we get that data off of our machines? How do we sift through a bunch of seemingly meaningless diagnostics? In this session, we’ll look at how we can keep track of our Azure application using structured logging, AppInsights and AppInsights analytics to make all that data more meaningful.
OSSF 2018 - Brandon Jung of GitLab - Is Your DevOps 'Tool Tax' Weighing You D...FINOS
DevOps promises faster deployments, better quality code in production, reduced risk of a security breaches, and more! The number of tools used to cover all the stages across DevOps lifecycle is likely reaching in the 20’s. How much are your spending on these tools (open source or purchased) -- both from a cost and time to implement? Not to mention, how much is it costing you to integrate them all? Have you thought about the users in your organization and their constant ‘switching’ between these tool and the time it takes them to learn and manage things day-to-day?
Whether or not you choose Open Source or open-core for these point DevOps tools, the burden is significant on your organization. Learn how your financial services peers are overcoming this DevOps tool tax to gain their competitive advantage in the market.
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
Slides for my "WebRTC-to-SIP and back: it's not all about audio and video" presentation at the OpenSIPS Summit 2024.
They describe my prototype efforts to add gatewaying support for a few SIP application protocols (T.140 for real-time text and MSRP) to Janus via data channels, with the related implementation challenges and the interesting opportunities they open.
Slides for my "Am I sober or am I trunk? A Janus story" presentation at Kamailio World 2024.
They describe my prototype efforts to add an option to create a trunk between a Janus instance and a SIP server, with the related implementation challenges and the interesting opportunities it opens.
Getting AV1/SVC to work in the Janus WebRTC ServerLorenzo Miniero
Slides for the "Getting AV1/SVC to work in the Janus WebRTC Server" presentation I made at the Real-Time Communications devroom of FOSDEM 2024 in Brussels. It describes in detail how AV1 is used in real-time communications (e.g., RTP packetization rules) and how the Dependency Descriptor extensions allows for SVC to be used in a server, by sharing my experience integrating it in the Janus WebRTC Server.
Slides for the "WebRTC broadcasting: standardization, challenges and opportunities" presentation I made at TADSummit 2023 in Paris. It presents the problems traditional broadcasting has with new scenarios that would benefit from a much lower latency solution, and how WebRTC can help. It also introduces the standard WHIP and WHEP protocols for ingestion and egress, with a few details on how a WebRTC stream could be scaled to a very wide audience using something like SOLEIL (Streaming Of Large scale Events over Internet cLouds).
Slides for the "Bandwidth Estimation in the Janus WebRTC Server" presentation I made at the new RTC.ON event in Krakow. It covers my journey in BWE, starting from the existing options, up to the decision to start from scratch and create a new approach to create a Janus-based testbed for simulcast subscribers.
The challenges of hybrid meetings @ CommCon 2023Lorenzo Miniero
Slides for "The challenges of hybrid meetings" presentation I made at CommCon 2023. It covers how we provided remote participation services to live events before the pandemic, how we had to refactor everything for virtual only events, and what had to be changed again to accomodate audiences that may be evenly split between local and remote participants, with IETF meetings as a practical test case.
Real-Time Text and WebRTC @ Kamailio World 2023Lorenzo Miniero
Slides for my "Bringing real-time text to WebRTC for NG Emergency Services" presentation at Kamailio World 2023.
They describe my prototype efforts to get SIP-based T.140 Real-Time Text to work with WebRTC endpoints via data channels, thanks to Janus acting as a gateway for the purpose.
Slides I presented in the Open Media devroom at FOSDEM 2023, where I gave an intro on how to capture, record and produce music using just open source software on Linux. It's a very high level overview on available software to do different things, and how they can be used together using JACK and/or Pipewire.
These are the slides for the presentation I shared at the virtual edition of IIT-RTC 2022. I talked about how cascading/scalability worked with Janus 0.x, and what steps we've taken to do the same for 1.x (multistream) as well. In particular, the focus is on the new integrated cascading support in the VideoRoom plugin.
SIP transfer with Janus/WebRTC @ OpenSIPS 2022Lorenzo Miniero
These are the slides I presented at the OpenSIPS Summit 2022, where I talked about support for SIP call transfer and multiple lines in Janus, to make those features available to SIP-unaware WebRTC endpoints easily. The presentation also included a few details on a practical interaction with OpenSIPS instances.
Slides for the talk I made at the virtual edition of FOSDEM 2022, on how to use WHIP for WebRTC broadcasting ingestion, and how the distribution process could be done via WebRTC as well, e.g., via Janus (and the SOLEIL architecture).
Slides for the presentation I made at ClueCon 21 on the experimental RED support in WebRTC, and how we've started tinkering with it in Janus. The presentation also addresses a more generic overview on audio features in WebRTC.
Slides for the talk I made at IIT-RTC 2021 about WHIP (WebRTC-HTTP ingestion protocol) and how it can help foster adoption of WebRTC in traditional broadcasting tools. The slides also cover my open source implementations of WHIP server (based on Janus) and WHIP client (based on GStreamer), and interoperability tests with other implementations.
These slides cover a workshop called "Having fun with Janus and WebRTC" at the virtual edition of OpenSIPS 2021. The workshop guided viewers to how they could use different features in Janus to build a WebRTC Social TV application, including how to write a new plugin in JavaScript to build a virtual remote.
Slides for the presentation I did remotely at Open Source World, to talk about audio-only WebRTC applications, and what we've done in Janus to improve and cover the requirements so far.
Just a few slides to talk about the first efforts on JamRTC, a native application based on GStreamer to do live jam sessions using WebRTC and Janus as an SFU. Mostly an overview of the initial architecture, with questions at the end to figure out if the approach is right or not, how to minimize latency, etc.
Scaling WebRTC deployments with multicast @ IETF 110 MBONEDLorenzo Miniero
An overview of how multicast can be used to scale WebRTC deployments, with focus on the Virtual Event Platform used to provide remote participation support to IETF meetings, given during the MBONED WG session at IETF 110.
Slides for the 60 minutes "part 2" Janus workshop I presented at the virtual edition of ClueCon 2021. This time the slides covered Janus ability to bridge WebRTC and non-WebRTC applications to do interesting things, especially with the help of plain RTP and RTP forwarders. Check the conference recordings to see the actual demos in action.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
1. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Asynchronous event/state notifications
in the Janus WebRTC server
Providing administrators and developers with more tools to manage a Janus instance
Lorenzo Miniero
@elminiero
FOSDEM 2017 Real Time devroom
4th February 2017, Brussels
2. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Outline
1 Janus: a general purpose WebRTC gateway (application) server
Where were we? (FOSDEM 2016)
First take at monitoring: the Admin API
2 A new type of Janus plugins: Event Handlers
An asynchronous approach to monitoring/troubleshooting
Real example: integrating Homer as a monitoring framework
3 Playing with Event Handlers: a look at the real thing
Monitoring a single PeerConnection: Echo Test
Correlating multiple PeerConnections: Video Room
4 Next steps
3. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
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
4. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
A quick recap: 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
• “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
• Plugins can be combined on client side as “bricks”
• Video SFU, Audio MCU, SIP gatewaying, broadcasting, etc.
FOSDEM 2016 slides
• http://bit.ly/2jQGsgh
5. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
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”
• ... assuming you know the identifiers to query (session/handle)
http://www.meetecho.com/blog/understanding-the-janus-admin-api/
6. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
7. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
{
"session_id": 6281631500841242,
"handle_id": 6383008526518405,
"plugin": "janus.plugin.echotest",
[..]
"plugin_specific": {
[..]
},
"flags": {
[..]
},
"sdps": {
[..]
},
"streams": [
[..]
]
}
8. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
{
"session_id": 6281631500841242,
"handle_id": 6383008526518405,
"plugin": "janus.plugin.echotest",
[..]
"plugin_specific": {
[..]
},
"flags": {
[..]
},
"sdps": {
[..]
},
"streams": [
[..]
]
}
9. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
{
"session_id": 6281631500841242,
"handle_id": 6383008526518405,
"plugin": "janus.plugin.echotest",
[..]
"plugin_specific": {
[..]
},
"flags": {
[..]
},
"sdps": {
[..]
},
"streams": [
[..]
]
}
10. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
{
"session_id": 6281631500841242,
"handle_id": 6383008526518405,
"plugin": "janus.plugin.echotest",
[..]
"plugin_specific": {
[..]
},
"flags": {
[..]
},
"sdps": {
[..]
},
"streams": [
[..]
]
}
11. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
{
"session_id": 6281631500841242,
"handle_id": 6383008526518405,
"plugin": "janus.plugin.echotest",
[..]
"plugin_specific": {
[..]
},
"flags": {
[..]
},
"sdps": {
[..]
},
"streams": [
[..]
]
}
12. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Admin API overview: polling for information
{
"session_id": 6281631500841242,
"handle_id": 6383008526518405,
"plugin": "janus.plugin.echotest",
[..]
"plugin_specific": {
[..]
},
"flags": {
[..]
},
"sdps": {
[..]
},
"streams": [
[..]
]
}
13. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs you to poll again to see changes
• Information is lost when session/handle is gone
• What about an asynchronous approach instead?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Shared “header” (e.g., to identify target of event)
• Different type of events allows for filtering
• 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
• Third-party plugins may provide integration with existing frameworks
14. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs you to poll again to see changes
• Information is lost when session/handle is gone
• What about an asynchronous approach instead?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Shared “header” (e.g., to identify target of event)
• Different type of events allows for filtering
• 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
• Third-party plugins may provide integration with existing frameworks
15. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs you to poll again to see changes
• Information is lost when session/handle is gone
• What about an asynchronous approach instead?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Shared “header” (e.g., to identify target of event)
• Different type of events allows for filtering
• 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
• Third-party plugins may provide integration with existing frameworks
16. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs you to poll again to see changes
• Information is lost when session/handle is gone
• What about an asynchronous approach instead?
• A new mechanism: Event Handlers
• Core and plugins generate events
• Shared “header” (e.g., to identify target of event)
• Different type of events allows for filtering
• 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
• Third-party plugins may provide integration with existing frameworks
17. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Event Handlers overview: routing and managing async events
18. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Type of events
• Different events you can subscribe to
• Session related events (e.g., session created/destroyed, etc.)
• Handle related events (e.g., handle attached/detached, etc.)
• JSEP related events (e.g., got/sent offer/answer)
• WebRTC related events (e.g., PeerConnection up/down, ICE state changes,
DTLS state, etc.)
• Media related events (e.g., media started/stopped flowing, stats on
packets/bytes, etc.)
• Plugin-originated events (specific to the application)
• Transport-originated (specific to the transport)
• Correlation possible on different identifiers
• Transport instances that originate specific session
• Opaque ID applications can set on handles of same “user”
• Plugin-specific identifiers (e.g., in VideoRoom)
19. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Type of events
• Different events you can subscribe to
• Session related events (e.g., session created/destroyed, etc.)
• Handle related events (e.g., handle attached/detached, etc.)
• JSEP related events (e.g., got/sent offer/answer)
• WebRTC related events (e.g., PeerConnection up/down, ICE state changes,
DTLS state, etc.)
• Media related events (e.g., media started/stopped flowing, stats on
packets/bytes, etc.)
• Plugin-originated events (specific to the application)
• Transport-originated (specific to the transport)
• Correlation possible on different identifiers
• Transport instances that originate specific session
• Opaque ID applications can set on handles of same “user”
• Plugin-specific identifiers (e.g., in VideoRoom)
20. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Sample Event Handler: a first proof-of-concept
• Example of Event Handler we provide out of the box
• Simply forwards all events as JSON to an HTTP backend
• Supports basic authentication
• Can group events (i.e., JSON array vs. multiple JSON objects)
• Implements simple retransmission (exponential back-off)
• Does nothing more than that: logic needs to be elsewhere
• HTTP backend decides what to do with events, if anything
• Demo in a minute to show exactly that!
• May be extended later on with different transports
• e.g., WebSockets, RabbitMQ, etc.
• ... or does this belong to different handlers entirely?
21. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Sample Event Handler example: notifying an Admin
application
22. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Sample Event Handler example: notifying an Admin
application
23. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
A real-world example: Homer/HEP integration!
• Monitoring Janus sessions through a popular tool
• Homer/HEP intercepts the events Janus sends
• These events are correlated and displayed
• More on that in just a few minutes!
24. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Meetecho+Janus+Homer: awesome on multiple levels!
https://www.youtube.com/watch?v=TkgDOMSv9PE
25. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
• Sample Event Handler forwards all events to web backend
• node.js web backend saves events to DB
http://www.meetecho.com/blog/event-handlers-a-practical-example/
26. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 1,
"timestamp": 1485872279008725,
"session_id": 192621687169800,
"event": {
"name": "created",
"transport": {
"transport": "janus.transport.http",
"id": "0x60e00003e160"
}
}
}
27. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 1,
"timestamp": 1485872279008725,
"session_id": 192621687169800,
"event": {
"name": "created",
"transport": {
"transport": "janus.transport.http",
"id": "0x60e00003e160"
}
}
}
28. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 1,
"timestamp": 1485872279008725,
"session_id": 192621687169800,
"event": {
"name": "created",
"transport": {
"transport": "janus.transport.http",
"id": "0x60e00003e160"
}
}
}
29. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 2,
"timestamp": 1485872279029549,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"name": "attached",
"plugin": "janus.plugin.echotest",
"opaque_id": "echotest-l7jLWaHvyU9q"
}
}
30. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 2,
"timestamp": 1485872279029549,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"name": "attached",
"plugin": "janus.plugin.echotest",
"opaque_id": "echotest-l7jLWaHvyU9q"
}
}
31. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 2,
"timestamp": 1485872279029549,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"name": "attached",
"plugin": "janus.plugin.echotest",
"opaque_id": "echotest-l7jLWaHvyU9q"
}
}
32. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 8,
"timestamp": 1485872279129034,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"owner": "remote",
"jsep": {
"type": "offer",
"sdp": "v=0rn[..]"
}
}
}
33. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 8,
"timestamp": 1485872279129034,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"owner": "remote",
"jsep": {
"type": "offer",
"sdp": "v=0rn[..]"
}
}
}
34. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 8,
"timestamp": 1485872279129034,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"owner": "remote",
"jsep": {
"type": "offer",
"sdp": "v=0rn[..]"
}
}
}
35. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 8,
"timestamp": 1485872279131464,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"owner": "local",
"jsep": {
"type": "answer",
"sdp": "v=0rn[..]"
}
}
}
36. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 8,
"timestamp": 1485872279131464,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"owner": "local",
"jsep": {
"type": "answer",
"sdp": "v=0rn[..]"
}
}
}
37. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 8,
"timestamp": 1485872279131464,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"owner": "local",
"jsep": {
"type": "answer",
"sdp": "v=0rn[..]"
}
}
}
38. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279153835,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"ice": "connecting",
"stream_id": 1,
"component_id": 1
}
}
39. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279153835,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"ice": "connecting",
"stream_id": 1,
"component_id": 1
}
}
40. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279153835,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"ice": "connecting",
"stream_id": 1,
"component_id": 1
}
}
41. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279230699,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"ice": "connected",
"stream_id": 1,
"component_id": 1
}
}
42. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279230699,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"ice": "connected",
"stream_id": 1,
"component_id": 1
}
}
43. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279349240,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"selected-pair": "192.168.1.69:33755 [host,udp]
<-> 192.168.1.69:55537 [host,udp]",
"stream_id": 1,
"component_id": 1
}
}
44. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279349240,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"selected-pair": "192.168.1.69:33755 [host,udp]
<-> 192.168.1.69:55537 [host,udp]",
"stream_id": 1,
"component_id": 1
}
}
45. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279349713,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"dtls": "trying",
"stream_id": 1,
"component_id": 1
}
}
46. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279349713,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"dtls": "trying",
"stream_id": 1,
"component_id": 1
}
}
47. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279349713,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"dtls": "trying",
"stream_id": 1,
"component_id": 1
}
}
48. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279361899,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"dtls": "connected",
"stream_id": 1,
"component_id": 1
}
}
49. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279361899,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"dtls": "connected",
"stream_id": 1,
"component_id": 1
}
}
50. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279362615,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"connection": "webrtcup"
}
}
51. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279362615,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"connection": "webrtcup"
}
}
52. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 16,
"timestamp": 1485872279362615,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"connection": "webrtcup"
}
}
53. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872279386850,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"receiving": true
}
}
54. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872279386850,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"receiving": true
}
}
55. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872279386850,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"receiving": true
}
}
56. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872279559121,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"receiving": true
}
}
57. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872279559121,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"receiving": true
}
}
58. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872279559121,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"receiving": true
}
}
59. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872280230983,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"base": 48000,
"lsr": 454522762,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 134488,
"jitter-remote": 0,
"packets-received": 43,
"packets-sent": 43,
"bytes-received": 4089,
"bytes-sent": 4519,
"nacks-received": 0,
"nacks-sent": 0
}
60. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872280230983,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"base": 48000,
"lsr": 454522762,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 134488,
"jitter-remote": 0,
"packets-received": 43,
"packets-sent": 43,
"bytes-received": 4089,
"bytes-sent": 4519,
"nacks-received": 0,
"nacks-sent": 0
}
61. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872280230983,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"base": 48000,
"lsr": 454522762,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 134488,
"jitter-remote": 0,
"packets-received": 43,
"packets-sent": 43,
"bytes-received": 4089,
"bytes-sent": 4519,
"nacks-received": 0,
"nacks-sent": 0
}
62. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872281236922,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "audio",
"base": 48000,
"lsr": 454522762,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 5338,
"jitter-remote": 0,
"packets-received": 93,
"packets-sent": 93,
"bytes-received": 8940,
"bytes-sent": 9870,
"nacks-received": 0,
"nacks-sent": 0
}
63. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872280231007,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"base": 90000,
"lsr": 454528520,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 42459,
"jitter-remote": 3,
"packets-received": 45,
"packets-sent": 45,
"bytes-received": 22779,
"bytes-sent": 23229,
"nacks-received": 0,
"nacks-sent": 0
}
64. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872280231007,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"base": 90000,
"lsr": 454528520,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 42459,
"jitter-remote": 3,
"packets-received": 45,
"packets-sent": 45,
"bytes-received": 22779,
"bytes-sent": 23229,
"nacks-received": 0,
"nacks-sent": 0
}
65. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872280231007,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"base": 90000,
"lsr": 454528520,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 42459,
"jitter-remote": 3,
"packets-received": 45,
"packets-sent": 45,
"bytes-received": 22779,
"bytes-sent": 23229,
"nacks-received": 0,
"nacks-sent": 0
}
66. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 32,
"timestamp": 1485872281236949,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"media": "video",
"base": 90000,
"lsr": 454619874,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 6537,
"jitter-remote": 2,
"packets-received": 74,
"packets-sent": 74,
"bytes-received": 39933,
"bytes-sent": 40673,
"nacks-received": 0,
"nacks-sent": 0
}
67. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 64,
"timestamp": 1485872288429976,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"plugin": "janus.plugin.echotest",
"data": {
"audio_active": true,
"video_active": true,
"bitrate": 256000
}
}
}
68. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 64,
"timestamp": 1485872288429976,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"plugin": "janus.plugin.echotest",
"data": {
"audio_active": true,
"video_active": true,
"bitrate": 256000
}
}
}
69. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Monitoring a single PeerConnection: Echo Test
{
"type": 64,
"timestamp": 1485872288429976,
"session_id": 192621687169800,
"handle_id": 7684775393694722,
"event": {
"plugin": "janus.plugin.echotest",
"data": {
"audio_active": true,
"video_active": true,
"bitrate": 256000
}
}
}
70. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
• VideoRoom demo uses “opaque ID” with handles for correlation
• Again, node.js web backend stores events in updated DB
http://www.meetecho.com/blog/correlating-janus-event-handlers/
71. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877400989640,
"session_id": 6706708418803609,
"handle_id": 5978921396405279,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "joined",
"room": 1234,
"id": 8361242010771549,
"private_id": 2895980005,
"display": "ciccio"
}
}
}
72. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877400989640,
"session_id": 6706708418803609,
"handle_id": 5978921396405279,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "joined",
"room": 1234,
"id": 8361242010771549,
"private_id": 2895980005,
"display": "ciccio"
}
}
}
73. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877400989640,
"session_id": 6706708418803609,
"handle_id": 5978921396405279,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "joined",
"room": 1234,
"id": 8361242010771549,
"private_id": 2895980005,
"display": "ciccio"
}
}
}
74. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877410046996,
"session_id": 2273950556695883,
"handle_id": 7656381184336435,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "joined",
"room": 1234,
"id": 5265065137454348,
"private_id": 935695062,
"display": "pippo"
}
}
}
75. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877410046996,
"session_id": 2273950556695883,
"handle_id": 7656381184336435,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "joined",
"room": 1234,
"id": 5265065137454348,
"private_id": 935695062,
"display": "pippo"
}
}
}
76. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877410046996,
"session_id": 2273950556695883,
"handle_id": 7656381184336435,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "joined",
"room": 1234,
"id": 5265065137454348,
"private_id": 935695062,
"display": "pippo"
}
}
}
77. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877410162143,
"session_id": 2273950556695883,
"handle_id": 3756409443147593,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "subscribing",
"room": 1234,
"feed": 8361242010771549,
"private_id": 935695062
}
}
}
78. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877410162143,
"session_id": 2273950556695883,
"handle_id": 3756409443147593,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "subscribing",
"room": 1234,
"feed": 8361242010771549,
"private_id": 935695062
}
}
}
79. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877410162143,
"session_id": 2273950556695883,
"handle_id": 3756409443147593,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "subscribing",
"room": 1234,
"feed": 8361242010771549,
"private_id": 935695062
}
}
}
80. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877414055211,
"session_id": 6706708418803609,
"handle_id": 6827135960427146,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "subscribing",
"room": 1234,
"feed": 5265065137454348,
"private_id": 2895980005
}
}
}
81. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877414055211,
"session_id": 6706708418803609,
"handle_id": 6827135960427146,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "subscribing",
"room": 1234,
"feed": 5265065137454348,
"private_id": 2895980005
}
}
}
82. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
{
"type": 64,
"timestamp": 1485877414055211,
"session_id": 6706708418803609,
"handle_id": 6827135960427146,
"event": {
"plugin": "janus.plugin.videoroom",
"data": {
"event": "subscribing",
"room": 1234,
"feed": 5265065137454348,
"private_id": 2895980005
}
}
}
86. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
• ciccio (6706708418803609 / videoroomtest-3REdGHcrZPMk)
• Publishing with ID 8361242010771549 (handle 5978921396405279)
• Subscribed to ID 5265065137454348 (handle 6827135960427146)
• pippo (2273950556695883 / videoroomtest-vZEKMO4F5JiL)
• Publishing with ID 5265065137454348 (handle 7656381184336435)
• Subscribed to ID 8361242010771549 (handle 3756409443147593)
• Hey, they’re both publishing and subscribed to each other! (d’uh...)
• PS: did you notice private_id? It can also help, in VideoRoom...
• PPS: What about transports? (spoiler alert: both used HTTP)
87. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
• ciccio (6706708418803609 / videoroomtest-3REdGHcrZPMk)
• Publishing with ID 8361242010771549 (handle 5978921396405279)
• Subscribed to ID 5265065137454348 (handle 6827135960427146)
• pippo (2273950556695883 / videoroomtest-vZEKMO4F5JiL)
• Publishing with ID 5265065137454348 (handle 7656381184336435)
• Subscribed to ID 8361242010771549 (handle 3756409443147593)
• Hey, they’re both publishing and subscribed to each other! (d’uh...)
• PS: did you notice private_id? It can also help, in VideoRoom...
• PPS: What about transports? (spoiler alert: both used HTTP)
88. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
• ciccio (6706708418803609 / videoroomtest-3REdGHcrZPMk)
• Publishing with ID 8361242010771549 (handle 5978921396405279)
• Subscribed to ID 5265065137454348 (handle 6827135960427146)
• pippo (2273950556695883 / videoroomtest-vZEKMO4F5JiL)
• Publishing with ID 5265065137454348 (handle 7656381184336435)
• Subscribed to ID 8361242010771549 (handle 3756409443147593)
• Hey, they’re both publishing and subscribed to each other! (d’uh...)
• PS: did you notice private_id? It can also help, in VideoRoom...
• PPS: What about transports? (spoiler alert: both used HTTP)
89. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
• ciccio (6706708418803609 / videoroomtest-3REdGHcrZPMk)
• Publishing with ID 8361242010771549 (handle 5978921396405279)
• Subscribed to ID 5265065137454348 (handle 6827135960427146)
• pippo (2273950556695883 / videoroomtest-vZEKMO4F5JiL)
• Publishing with ID 5265065137454348 (handle 7656381184336435)
• Subscribed to ID 8361242010771549 (handle 3756409443147593)
• Hey, they’re both publishing and subscribed to each other! (d’uh...)
• PS: did you notice private_id? It can also help, in VideoRoom...
• PPS: What about transports? (spoiler alert: both used HTTP)
90. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Correlating multiple PeerConnections: Video Room
• ciccio (6706708418803609 / videoroomtest-3REdGHcrZPMk)
• Publishing with ID 8361242010771549 (handle 5978921396405279)
• Subscribed to ID 5265065137454348 (handle 6827135960427146)
• pippo (2273950556695883 / videoroomtest-vZEKMO4F5JiL)
• Publishing with ID 5265065137454348 (handle 7656381184336435)
• Subscribed to ID 8361242010771549 (handle 3756409443147593)
• Hey, they’re both publishing and subscribed to each other! (d’uh...)
• PS: did you notice private_id? It can also help, in VideoRoom...
• PPS: What about transports? (spoiler alert: both used HTTP)
91. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
What to do next?
• Event Handlers are a very recent addition
• Still figuring out if existing events are enough
• Are the correlation identifiers sufficient?
• Experimenting with this will give us more info
• Hopefully more Event Handlers in the future
• Homer/HEP native module on the way!
• Other cool ideas for features/integration?
• Monitoring/troubleshooting framework
• Student working on it (Master Degree thesis)
Help us improve this!
• Play with it, more testing is important
• Write your own applications/handlers!
92. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
What to do next?
• Event Handlers are a very recent addition
• Still figuring out if existing events are enough
• Are the correlation identifiers sufficient?
• Experimenting with this will give us more info
• Hopefully more Event Handlers in the future
• Homer/HEP native module on the way!
• Other cool ideas for features/integration?
• Monitoring/troubleshooting framework
• Student working on it (Master Degree thesis)
Help us improve this!
• Play with it, more testing is important
• Write your own applications/handlers!
93. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
What to do next?
• Event Handlers are a very recent addition
• Still figuring out if existing events are enough
• Are the correlation identifiers sufficient?
• Experimenting with this will give us more info
• Hopefully more Event Handlers in the future
• Homer/HEP native module on the way!
• Other cool ideas for features/integration?
• Monitoring/troubleshooting framework
• Student working on it (Master Degree thesis)
Help us improve this!
• Play with it, more testing is important
• Write your own applications/handlers!
94. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
What to do next?
• Event Handlers are a very recent addition
• Still figuring out if existing events are enough
• Are the correlation identifiers sufficient?
• Experimenting with this will give us more info
• Hopefully more Event Handlers in the future
• Homer/HEP native module on the way!
• Other cool ideas for features/integration?
• Monitoring/troubleshooting framework
• Student working on it (Master Degree thesis)
Help us improve this!
• Play with it, more testing is important
• Write your own applications/handlers!
95. FOSDEM2017
L. Miniero
Janus
Where were we?
Admin API
Monitoring
Event Handlers
Homer/HEP
Demo
EchoTest
VideoRoom
Next steps
Questions?
@elminiero
@meetecho