CINXE.COM

<!doctype html> <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-2.7 docs-doc-page docs-doc-id-development/architecture" data-has-hydrated="false"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v3.3.2"> <title data-rh="true">Architecture | BigBlueButton</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.bigbluebutton.org/development/architecture/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="2.7"><meta data-rh="true" name="docusaurus_tag" content="docs-default-2.7"><meta data-rh="true" name="docsearch:version" content="2.7"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-2.7"><meta data-rh="true" property="og:title" content="Architecture | BigBlueButton"><meta data-rh="true" name="description" content="BigBlueButton Architecture"><meta data-rh="true" property="og:description" content="BigBlueButton Architecture"><meta data-rh="true" name="keywords" content="architecture"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.bigbluebutton.org/development/architecture/"><link data-rh="true" rel="alternate" href="https://docs.bigbluebutton.org/development/architecture/" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.bigbluebutton.org/development/architecture/" hreflang="x-default"><script src="https://cdn.baycloud.com/cl.js?cid=9be233bfe3004dc49e742fd0fa98642c&hN=docs.bigbluebutton.org"></script><link rel="stylesheet" href="/assets/css/styles.47ff481a.css"> <script src="/assets/js/runtime~main.bafa1abe.js" defer="defer"></script> <script src="/assets/js/main.66666826.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="BigBlueButton Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/logo.svg" alt="BigBlueButton Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">BigBlueButton</b></a><a href="https://bigbluebutton.org/teachers/tutorials/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Teaching</a><a class="navbar__item navbar__link" href="/development/guide/">Development</a><a class="navbar__item navbar__link" href="/administration/install/">Administration</a><a class="navbar__item navbar__link" href="/greenlight/v3/install/">Greenlight</a><a class="navbar__item navbar__link" href="/new-features/">New Features</a><a class="navbar__item navbar__link" href="/support/getting-help/">Support</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/accessiblity/">2.7</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/3.0/development/architecture/">3.0</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/development/architecture/">2.7</a></li><li><a class="dropdown__link" href="/2.6/development/architecture/">2.6</a></li><li><a class="dropdown__link" href="/2.5-legacy/development/architecture/">2.5-legacy</a></li></ul></div><a href="https://github.com/bigbluebutton/bigbluebutton/tree/v3.0.x-release/docs" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/development/guide/">Development</a><button aria-label="Collapse sidebar category &#x27;Development&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/development/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/development/guide/">Development Guide</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/development/design/">Development Design Guide</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/development/api/">API Reference</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/development/recording/">Recording</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/development/localization/">Localization</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/development/webhooks/">Webhooks</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/development/guide/"><span itemprop="name">Development</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Architecture</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 2.7</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Architecture</h1></header><p>BigBlueButton is built upon a solid foundation of underlying components, including NGINX, FreeSWITCH, Kurento, Redis, Node.js, React.js, and others.</p> <p>This page describes the overall architecture of BigBlueButton and how these components work together.</p> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="high-level-architecture">High-level architecture<a href="#high-level-architecture" class="hash-link" aria-label="Direct link to High-level architecture" title="Direct link to High-level architecture">​</a></h2> <p>The following diagram provides a high-level view of how BigBlueButton&#x27;s components work together.</p> <p><img decoding="async" loading="lazy" alt="Architecture Overview" src="data:image/png;base64,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" width="942" height="518" class="img_ev3q"></p> <p>We&#x27;ll break down each component in more detail below.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="html5-client">HTML5 client<a href="#html5-client" class="hash-link" aria-label="Direct link to HTML5 client" title="Direct link to HTML5 client">​</a></h3> <p>The HTML5 client is a single page, responsive web application that is built upon the following components:</p> <ul> <li><a href="https://facebook.github.io/react/" target="_blank" rel="noopener noreferrer">React.js</a> for rendering the user interface in an efficient manner</li> <li><a href="https://webrtc.org/" target="_blank" rel="noopener noreferrer">WebRTC</a> for sending/receiving audio and video</li> </ul> <p>The HTML5 client connects directly with the BigBlueButton server over port 443 (SSL), from loading the BigBlueButton client to making a web socket connection. These connections are all handled by nginx.</p> <p>The HTML5 server sits behind nginx.</p> <p>The HTML5 server is built upon</p> <ul> <li><a href="https://meteor.com" target="_blank" rel="noopener noreferrer">Meteor.js</a> in <a href="https://www.ecma-international.org/ecma-262/6.0/" target="_blank" rel="noopener noreferrer">ECMA2015</a> for communication between client and server.</li> <li><a href="https://www.mongodb.com/" target="_blank" rel="noopener noreferrer">MongoDB</a> for keeping the state of each BigBlueButton client consistent with the BigBlueButton server</li> </ul> <p>The MongoDB database contains information about all meetings on the server and, in turn, each client connected to a meeting. Each user&#x27;s client is only aware of the their meeting&#x27;s state, such the user&#x27;s public and private chat messages sent and received. The client side subscribes to the published collections on the server side. Updates to MongoDB on the server side are automatically pushed to MiniMongo on the client side.</p> <p>The following diagram gives an overview of the architecture of the HTML5 client and its communications with the other components in BigBlueButton.</p> <p><img decoding="async" loading="lazy" alt="HTML5 Overview" src="/assets/images/23-html5-client-architecture-a2bfaffb02c9b2ffb708f558c396afc7.png" width="1613" height="980" class="img_ev3q"></p> <h4 class="anchor anchorWithStickyNavbar_LWe7" id="scalability-of-html5-server-component">Scalability of HTML5 server component<a href="#scalability-of-html5-server-component" class="hash-link" aria-label="Direct link to Scalability of HTML5 server component" title="Direct link to Scalability of HTML5 server component">​</a></h4> <p>BigBlueButton 2.2 used a single <code>nodejs</code> process for all client-side communication. This process would start to bottleneck (the <code>nodejs</code> process, running on a single CPU core, started to use 100% of the core). Because <code>nodejs</code> was running on a single CPU core, having a 16 or 32 CPU core server for BigBlueButton 2.2 failed to yield much additional scalability.</p> <p>BigBlueButton 2.3 moves away from a single <code>nodejs</code> process for <code>bbb-html5</code> towards multiple <code>nodejs</code> processes handling incoming messages from clients. This means that <code>bbb-html5</code> could use multiple CPU cores for processing messages and handling browser sessions (each <code>nodejs</code> process runs on a single CPU core).</p> <p>As of <a href="https://github.com/bigbluebutton/bigbluebutton/releases/tag/v2.3-alpha-7" target="_blank" rel="noopener noreferrer">2.3-alpha-7</a>, <code>bbb-html5</code> uses 2 &quot;frontend&quot; and two &quot;backend&quot; processes (this value is configurable in <code>bbb-html5-with-roles.conf</code>, see <a href="/administration/configuration-files/">Configuration Files</a>). A restart of BigBlueButton is required if you make changes to these files.</p> <p>The breakdown of functionality between front-end and back-end is as follows</p> <h5 class="anchor anchorWithStickyNavbar_LWe7" id="frontends">Frontend(s):<a href="#frontends" class="hash-link" aria-label="Direct link to Frontend(s):" title="Direct link to Frontend(s):">​</a></h5> <ul> <li>receive the <code>ValidateAuthTokenResp</code> event to complete authentication</li> <li>collection subscription and publishing</li> <li>other DDP events including method calls to send events to <code>akka-apps</code></li> <li>handle completely the Streamer redis events: Cursor, Annotations, External video share</li> <li>still require <code>MeetingStarted</code> and <code>MeetingEnded</code> events to create/destroy per-meeting event processing queues</li> </ul> <h5 class="anchor anchorWithStickyNavbar_LWe7" id="backends">Backend(s):<a href="#backends" class="hash-link" aria-label="Direct link to Backend(s):" title="Direct link to Backend(s):">​</a></h5> <ul> <li>handle all the non-streamer events</li> <li>if more than one backend is running, bbb-web splits the load in round-robin fashion by assigning an <code>instanceId</code>. So individual backends only process redis events for the meetings matching the associated <code>instanceId</code></li> <li><code>ValidateAuthTokenResp</code> is passed to backends as well, which is needed for the cases where you only have a backend, no frontends - for example dev environments that do not need to care about scaling</li> </ul> <p>When you use <code>sudo bbb-conf --setip &lt;hostname&gt;</code> or <code>sudo bbb-conf --restart</code>, <code>bbb-conf</code> will run <code>/etc/bigbluebutton/bbb-conf/apply-config.sh</code> between shutdown and restart of the BigBlueButton processes. In this way, you can change configuration values of BigBlueButton, or use some of the helper functions in <code>apply-lib.sh</code>. See <a href="https://docs.bigbluebutton.org/admin/customize.html#automatically-apply-configuration-changes-on-restart" target="_blank" rel="noopener noreferrer">Automatically apply configuration changes on restart</a>.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="bbb-web">BBB web<a href="#bbb-web" class="hash-link" aria-label="Direct link to BBB web" title="Direct link to BBB web">​</a></h3> <p>BigBlueButton web application is a Java-based application written in Scala. It implements the <a href="/development/api/">BigBlueButton API</a> and holds a copy of the meeting state.</p> <p>The BigBlueButton API provides a third-party integration (such as the <a href="https://moodle.org/plugins/mod_bigbluebuttonbn" target="_blank" rel="noopener noreferrer">BigBlueButtonBN plugin</a> for Moodle) with an endpoint to control the BigBlueButton server.</p> <p>Every access to BigBlueButton comes through a front-end portal (we refer to as a third-party application). BigBlueButton integrates Moodle, Wordpress, Canvas, Sakai, MatterMost, and others (see <a href="https://bigbluebutton.org/schools/integrations/" target="_blank" rel="noopener noreferrer">third-party integrations</a>). BigBlueButton comes with its own front-end called <a href="/greenlight/v3/install/">Greenlight</a>. When using a learning management system (LMS) such as Moodle, teachers can setup BigBlueButton rooms within their course and students can access the rooms and their recordings.</p> <p>The BigBlueButton comes with some simple <a href="/administration/install/#install">API demos</a>. Regardless of which front-end you use, they all use the <a href="/development/api/">API</a> under the hood.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="redis-pubsub">Redis PubSub<a href="#redis-pubsub" class="hash-link" aria-label="Direct link to Redis PubSub" title="Direct link to Redis PubSub">​</a></h3> <p>Redis PubSub provides a communication channel between different applications running on the BigBlueButton server.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="redis-db">Redis DB<a href="#redis-db" class="hash-link" aria-label="Direct link to Redis DB" title="Direct link to Redis DB">​</a></h3> <p>When a meeting is recorded, all events are stored in Redis DB. When the meeting ends, the Recording Processor will take all the recorded events as well as the different raw (PDF, WAV, FLV) files for processing.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="apps-akka">Apps akka<a href="#apps-akka" class="hash-link" aria-label="Direct link to Apps akka" title="Direct link to Apps akka">​</a></h3> <p>BigBlueButton Apps is the main application that pulls together the different applications to provide real-time collaboration in the meeting. It provides the list of users, chat, whiteboard, presentations in a meeting.</p> <p>Below is a diagram of the different components of Apps Akka.</p> <p><img decoding="async" loading="lazy" alt="Apps Akka architecture" src="data:image/png;base64,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" width="697" height="343" class="img_ev3q"></p> <p>The meeting business logic is in the MeetingActor. This is where information about the meeting is stored and where all messages for a meeting is processed.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="fsesl-akka">FSESL akka<a href="#fsesl-akka" class="hash-link" aria-label="Direct link to FSESL akka" title="Direct link to FSESL akka">​</a></h3> <p>We have extracted out the component that integrates with FreeSWITCH into it&#x27;s own application. This allows others who are using voice conference systems other than FreeSWITCH to easily create their own integration. Communication between apps and FreeSWITCH Event Socket Layer (fsels) uses messages through redis pubsub.</p> <p><img decoding="async" loading="lazy" alt="FsESL Akka architecture" src="data:image/png;base64,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" width="461" height="336" class="img_ev3q"></p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="freeswitch">FreeSWITCH<a href="#freeswitch" class="hash-link" aria-label="Direct link to FreeSWITCH" title="Direct link to FreeSWITCH">​</a></h3> <p>We think FreeSWITCH is an amazing piece of software for handling audio.</p> <p>FreeSWITCH provides the voice conferencing capability in BigBlueButton. Users are able to join the voice conference through the headset. Users joining through Google Chrome or Mozilla Firefox are able to take advantage of higher quality audio by connecting using WebRTC. FreeSWITCH can also be <a href="/administration/customize/#add-a-phone-number-to-the-conference-bridge">integrated with VOIP providers</a> so that users who are not able to join using the headset will be able to call in using their phone.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="kurento-and-webrtc-sfu">Kurento and WebRTC-SFU<a href="#kurento-and-webrtc-sfu" class="hash-link" aria-label="Direct link to Kurento and WebRTC-SFU" title="Direct link to Kurento and WebRTC-SFU">​</a></h3> <p>Kurento Media Server KMS is a media server that implements both SFU and MCU models. KMS is responsible for streaming of webcams, listen-only audio, and screensharing. The WebRTC-SFU acts as the media controller handling negotiations and to manage the media streams.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="joining-a-voice-conference">Joining a voice conference<a href="#joining-a-voice-conference" class="hash-link" aria-label="Direct link to Joining a voice conference" title="Direct link to Joining a voice conference">​</a></h3> <p>A user can join the voice conference (running in FreeSWITCH) from the BigBlueButton HTML5 client or through the <a href="/administration/customize/#add-a-phone-number-to-the-conference-bridge">phone</a>. When joining through the client, the user can choose to join Microphone or Listen Only, and the BigBlueButton client will make an audio connection to the server via WebRTC. WebRTC provides the user with high-quality audio with lower delay.</p> <p><img decoding="async" loading="lazy" alt="Joining Voice Conference" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ0AAAGTCAMAAAAFoLcJAAAAP1BMVEX/zAD+owHy8vKqwADd3dx7e3tCQUD///8AAAAqHBhhYWGnp6fBwcF9HgDbcgAAUgCUlJRokAI8awC2UgAALgAAdgehAAAJWElEQVR42u3daYOyKhgGYBc0UEzT/v9vPTxos5y3xeVhWLz50MxUk3EFN1gm2QXlu2QggAY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWigQAMa0IAGNKABDWhAAxrQOLeG5CspaGRcBRrQgAY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrQgAY0zqshKgGN79LIuv2k0UkpyyxX5bX/fYO5Ki2NQkmpquKNRq5u5kKWT6qenMZlsAdcNPqlxjTS5bVf2sYk5c0w2B8dtZm0UrSeD0CphxcaXfnVEIxGfqdfcjUuvwXSNiRzUes0qKVMN2KwKMFoMG2qnVuGLi7rNOjeY6oalKJyHmZX5cZ0e8RnihpmhB2KtyPsjzFlzg3TWhLVEDSYbJpvmK4yPtqGuaVMKzfSmJlDAxrQgAY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrQgAY0gteI+Lw9/BrPS1HXr29UzV88hYA0GvlOQ1an0mjke42/4AhGo6KjBd9HTXUaDXto7QcN9xyBaMzHGX/ScM4RhkYr12nI4QQaBqOu1dvZA1nRfYb0NQZdXOq2ea9RaWo64hQpKpQBeb0lIc3tSp9lTKkqEhGvNcxNQ3MWDQuhX2u0S/s5hUZbr5quDufQWFdPrU6hUSixvj+lP/uq192vqs6g8fXd0I/j8Ak01g8WTZu+xvoOsLZLxayxIRzd5mgIGlsGTrc5GoLGlkmV2xwNQKPY1PrrNm2NbcnoNEcD0Nj4arvMUf8aW5PAZY7619haO5e7bv41Nrd8hznqXUNvTkWHOepdY8c7OO5y1LvGjqpVQ6oaekezd5ejvjV27aLXOk2NfW+Dt02aGvs+IilcfZTgWWPn8ODqowS/Grr+2/8LW2P3a+xoyuFXY3f/d/SRrFeN/Q3eUY561TgQhm5y1KfGkRfYTY761DjU+Z3kqE+NQxNsJ2+BedQ49mGAk0NbPGocDEIXb4F51DjY8128BeZP4/Co4CBH/WkcbukOctSbRiGPpqCDj2S9aTC8Y8P/Fpg3DYYDg/lz1IeGPRKW4VHnD/fbyDUo/qqG6YFY9+29aMiWZ3jU6qJl/BpyMF2+0EeiQ9CQpFoVvQZ9batuanloT6OolXkM5q9CeknR5XtbxyYc9tz5Mn6N5St9R5Nj4UiibTDEqFApaGiqBMc8cl5oIgENnkm1UElocO1hCN7vhPrQEJJvNi1U7DNzwVkBocPS+KszrfzBdjg0/ugsPH+wHWhAAxrQgAY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrQgEZEGvndvca1p8uufGxSlaFqTGPpXCNXj4vA20auriP96DtpGsl0U9L8mUspS86eQs3CbmeS8mbbhtnE3W6oD0nDPEd6qrlBmHrzZMusu9E1155TgyTsZu7002gQyGQ3bTYXjoZ5PtONNEpqygbk4cOaouahbUehTU2joZixCSfvw9HI6WjOfsnSrpxG+/ToWtaeYh7adhRqCFerMdqt0xFN93A05udYzq+SosabLU/0zqpxvdn29v+20YeVoo/nmJtwMxQ2N0pLw6uRj93D+Cs3jEhn0yMUjfzRDvL7PKaMdkyZuMcUYzBX+t8x5R7gXHRpCq9eqJPNzKGB/RRoQAMa0IAGNKABDWhAAxrQgAY0oAENaEADGtCABjSgAQ1oQAMaGzVw3p5DpeI9+XbFdkZePxqSk2OQKnINRo72Uw+LQIONQ1AOiNg1mDjmk4zq6DUky5IftX2oNmaNRnJxzK5s55H0plE3Sh3moHP6UldpItdoaVQsDkaHritdNFX0Gi3HOghzUULLOmoNxjP206I0rYpZYyho/RSeSYJdUybqMeWrgXB0lMDOPbu3ibM0b94FdnyuycXRvnkXA/WoMXCMBLyrDXnU4FjV9PhaVqFocOQo89JLPjUYcrRpk9Fg6PRSpKNxOEe51yjzqnE4A7kXN/S8AvvB2nAvfOlX4+CSt5p7pUe/Ggfno+yrgHrWOBaDSqelcWi/nn9JVM8ah3KUd48tBA19IEf519n2rXGgSgX/GuzeNfbnaMveUfxr7M/RZkhPY/+kgb+jBKChd+6s6PqSoMbeHG2qJDV25ij3HlsgGvtylH8iGobGvjZfVYlqiD05WutENfbkaOHkWQWhsSNHHUxEQ9HYkaMOJqKhaGzP0cLF+BqKxuYcddNRAtHYnKNNm7LG1hx101FC0diYoy722ALSuFSbgsDJRDQgjW05qnTaGpty1MkeW1AaW3J0aFLX2JKjjsbXgDQ25Khw8I5oaBrr6+isowSkcanX7ojV7Qk0VueoLE6gsXYW4WoiGpjGyhx1NRENTGNljrqaiAamsS5HnU1EQ9P4lKOF3rx/F7HGx05AXwN29NZGgBqfXnclhcuOEpjGpxytpaqaQld1cQaNTzlaL98G1qdoG5+ODl6+ct6eo6d8ytH5a/PV5Swa73OUzjwiTzPCfnp/tOU6UUUkGu9zVDCehyUKjbc5KtwNJ2FqvM9Rd8NJoBpv3+erLslpiJuSroqqirg0hFJl5qrk45Exx4PGTWUuS11FpeGwZdjWoaLSkJnbIqEBDWhAAxrQgAY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrQgAY0bBlaaHwXIVUlnml0dLDW/Vml6JYym25Zlku66LPuls8HjI10nf23a093nS8j6il0hHijn2jcXrzCdMP1nl1Nza+jvZjvu9TfQGXTPVaNi31VFa249EzjOqqeXm+q1iRNW8jt8VBdmSu6D12UPzW6cv7nWDX0cghjI55q0Gs9Vzi/W4pu6T50pb34qZE/+pYHDdbS6H9zo7T1oSqadJhMt5jTQs5E+Wj+Nhc/NR7Vv84P+ocaF8aeQlH6tG30c/VNMk5LTtrD+4zT7Wray3j9raG8tY0LV4ouZwN4qTHXabLXzH+Y3/N+Ko3GVGZh5AZHERQYT0fYbw2qoukm1GEeIUGV7qgddOq3hr8xhaVpDMXz2ddPjXyeeUxzR5nnG+anHWf67JeGv/kGd4l7LgoNaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrQgAY0oAENaEADGtCABjSgEb+G43PBlSoqjSrq8wRyl0LVDs8hWTs+hyQ/RxXx+UVPVKABDWhAAxrQgAY0oAENaIRQ/gN3xV/MLudViAAAAABJRU5ErkJggg==" width="269" height="403" class="img_ev3q"></p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="uploading-a-presentation">Uploading a presentation<a href="#uploading-a-presentation" class="hash-link" aria-label="Direct link to Uploading a presentation" title="Direct link to Uploading a presentation">​</a></h3> <p>Uploaded presentations go through a conversion process in order to be displayed inside the client. When the uploaded presentation is an Office document, it needs to be converted into PDF using LibreOffice. The PDF document is then converted into scalable vector graphics (SVG) via <code>bbb-web</code>.</p> <p><img decoding="async" loading="lazy" alt="Uploading Presentation" src="/assets/images/presentation-upload-11-12a1c65c292b11dfb608f640a54aba66.png" width="660" height="434" class="img_ev3q"></p> <p>The conversion process sends progress messages to the client through the Redis pubsub.</p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="presentation-conversion-flow">Presentation conversion flow<a href="#presentation-conversion-flow" class="hash-link" aria-label="Direct link to Presentation conversion flow" title="Direct link to Presentation conversion flow">​</a></h3> <p>The diagram below describes the flow of the presentation conversion. We take in consideration the configuration for enabling and disabling SWF, SVG and PNG conversion.</p> <p><img decoding="async" loading="lazy" alt="General Conversion Flow" src="/assets/images/presentation-conversion-diagram-general-conversion-flow-34e787b41f0674ae5054fd9b7d6c5ce6.png" width="2352" height="878" class="img_ev3q"></p> <p>Then below the SVG conversion flow. It covers the conversion fallback. Sometimes we detect that the generated SVG file is heavy to load by the browser, we use the fallback to put a rasterized image inside the SVG file and make its loading light for the browser.</p> <p><img decoding="async" loading="lazy" alt="SVG Conversion Flow" src="/assets/images/presentation-conversion-diagram-svg-conversion-flow-d20e04f3ab62fe7d4a73b5d3ad0e8086.png" width="1378" height="2278" class="img_ev3q"></p> <h3 class="anchor anchorWithStickyNavbar_LWe7" id="internal-network-connections">Internal network connections<a href="#internal-network-connections" class="hash-link" aria-label="Direct link to Internal network connections" title="Direct link to Internal network connections">​</a></h3> <p>The following diagram shows how the various components of BigBlueButton connect to each other via sockets.</p> <p><img decoding="async" loading="lazy" alt="Network Connections" src="/assets/images/22-connections-d26f0926210fd67b7a9c705816e6e4db.png" width="1336" height="765" class="img_ev3q"></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/development/guide/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Development Guide</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/development/guide/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Development Guide</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#high-level-architecture" class="table-of-contents__link toc-highlight">High-level architecture</a><ul><li><a href="#html5-client" class="table-of-contents__link toc-highlight">HTML5 client</a><ul><li><a href="#scalability-of-html5-server-component" class="table-of-contents__link toc-highlight">Scalability of HTML5 server component</a></li></ul></li><li><a href="#bbb-web" class="table-of-contents__link toc-highlight">BBB web</a></li><li><a href="#redis-pubsub" class="table-of-contents__link toc-highlight">Redis PubSub</a></li><li><a href="#redis-db" class="table-of-contents__link toc-highlight">Redis DB</a></li><li><a href="#apps-akka" class="table-of-contents__link toc-highlight">Apps akka</a></li><li><a href="#fsesl-akka" class="table-of-contents__link toc-highlight">FSESL akka</a></li><li><a href="#freeswitch" class="table-of-contents__link toc-highlight">FreeSWITCH</a></li><li><a href="#kurento-and-webrtc-sfu" class="table-of-contents__link toc-highlight">Kurento and WebRTC-SFU</a></li><li><a href="#joining-a-voice-conference" class="table-of-contents__link toc-highlight">Joining a voice conference</a></li><li><a href="#uploading-a-presentation" class="table-of-contents__link toc-highlight">Uploading a presentation</a></li><li><a href="#presentation-conversion-flow" class="table-of-contents__link toc-highlight">Presentation conversion flow</a></li><li><a href="#internal-network-connections" class="table-of-contents__link toc-highlight">Internal network connections</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">BigBlueButton</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/bigbluebutton" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://groups.google.com/forum/#!forum/bigbluebutton-setup" target="_blank" rel="noopener noreferrer" class="footer__link-item">Setup Forums<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://groups.google.com/forum/#!forum/bigbluebutton-users" target="_blank" rel="noopener noreferrer" class="footer__link-item">Users Forums<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://groups.google.com/forum/#!forum/bigbluebutton-dev" target="_blank" rel="noopener noreferrer" class="footer__link-item">Developers Forums<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Support</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/support/road-map/">Road Map</a></li><li class="footer__item"><a class="footer__link-item" href="/support/faq/">FAQ</a></li><li class="footer__item"><a class="footer__link-item" href="/support/getting-help/">Getting help</a></li><li class="footer__item"><a class="footer__link-item" href="/support/troubleshooting/">Troubleshooting</a></li></ul></div><div class="col footer__col"><div class="footer__title">Resources</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://support.bigbluebutton.org/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Knowledge Base<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://bigbluebutton.org/teachers/tutorials/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Tutorial Videos<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Social</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.facebook.com/bigbluebutton" target="_blank" rel="noopener noreferrer" class="footer__link-item">Facebook<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/bigbluebutton" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/channel/UCYj1_2Q3HTWCAImvI6eZ0SA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Youtube<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 BigBlueButton Inc., Built with Docusaurus.</div></div></div></footer></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10