SlideShare una empresa de Scribd logo
1 de 22
Lecciones Aprendidas del Desarrollo de
      un Sistema de Conferencias

                Markos Calderon
            BigBlueButton Developer
    mcmarkos86@gmail.com - @markoscalderon
Un Sistema de Conferencia Web?




        BigBlueButton!
Open Source
• BigBlueButton es un proyecto open source de
  conferencias web para la educación a distancia
• 1068 subscritos en la lista de correo de desarrollo
• Comunidad activa: +14000 mensajes
• +3 años de desarrollo
• Traducido en mas de 35 idiomas
• Google Summer of Code 2010
• 9 releases
• Installation in 30 minutes!
Interfaz
Android
Arquitectura
Desarrollo del API
Integraciones / Plugins

             API
              create
               join
        isMeetingRunning
               End
           GetMeetings
          GetMeetingInfo
API
• Formato del API:
  http://yourserver.com/bigbluebutton/api/[call]?[params]

• Seguridad:
  – Security Salt (checksum SHA-1)
• Llamadas del API:
  create?name=Test&meetingID=test01&record=true&checksum=1234

• Respuesta:
Usando Redis
Redis
• Una base de datos rápida, ligera, clave-valor.




                   >>   SET foo bar
                   =>   OK
                   >>   GET foo
                   =>   bar
Guardar un evento?

             A Map of values
             {
                 module: Chat
                 event: SendPublicMessage
                 user: markos
                 message: hola!
                 timestamp: 122434
                 ….
             }
Por que?
• Busquedas
• Indexar
• Procesamiento
Tres pasos y a guardar!
=> INCR <eventID>
>> eventID -> 100

=> HMSET <meetingID>:eventID> {keys:values}
>> demo:100 { module:Chat, event:… }

=> LPUSH <meetingID>:events <eventID>
>> demo:events 100
Comunicación entre módulos

 BBB-APPS                             BBB-WEB
Encargado del                        Encargado del
 tiempo real                       BigBlueButton API




                  Actualizaciones:
             Estado de una Conferencia
                    Participantes
            Conversión de Presentaciones
Mensajes
• Protocolo PUBSUB
• Uso de comandos de Redis: PUBLISH y
  SUBSCRIBE
• Los mensajes son publicados en “canales”
Usando Redis pubsub
Publisher:
//an update is published
redis.publish(
           “channel:participants”,
           “{ meetingID:conf123, type:USER_LEFT,… }”
);

Subscriber:
redis.subscribe(“channel:participants”, updatesHandler);

//The updatesHandler
class UpdatesHandler{
     onMessage(String channel, String message){
          //process the message of channel:participants
          //{ meetingID:conf123, type:USER_LEFT,… }
     }
}
Reproductor HTML5
HTML5 Playback
• Al principio, escribimos nuestra propia solucion en javascript
  puro. Problems:
   – Codigo complejo – dificil de mantener
   – Compatibilidad en todos los browsers
   – Soporte para nuevos modulos


• Ahora, usamos popcorn.js
HTML5 Playback
Mas info acerca de BBB?
• http://bigbluebutton.org/


             bigbluebutton-blog


             @bigbluebutton


             /bigbluebutton
Markos calderon   lecciones aprendidas del desarrollo de un sistema de web conferencing

Más contenido relacionado

Similar a Markos calderon lecciones aprendidas del desarrollo de un sistema de web conferencing

Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
victdiazm
 
Citrix HDX como integrarlo con Microsoft Lync
Citrix HDX como integrarlo con Microsoft LyncCitrix HDX como integrarlo con Microsoft Lync
Citrix HDX como integrarlo con Microsoft Lync
Javier Sanchez Alcazar
 

Similar a Markos calderon lecciones aprendidas del desarrollo de un sistema de web conferencing (20)

Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Social Erlang
Social ErlangSocial Erlang
Social Erlang
 
SignalR y dispositivos móviles
SignalR y dispositivos móvilesSignalR y dispositivos móviles
SignalR y dispositivos móviles
 
WebRTC en tu web con OpenVidu
WebRTC en tu web con OpenViduWebRTC en tu web con OpenVidu
WebRTC en tu web con OpenVidu
 
Desafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESBDesafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESB
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
Backbeam
BackbeamBackbeam
Backbeam
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Desarrollo de una aplicación Web para organizar Eventos Deportivos
Desarrollo de una aplicación Web para organizar Eventos DeportivosDesarrollo de una aplicación Web para organizar Eventos Deportivos
Desarrollo de una aplicación Web para organizar Eventos Deportivos
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los serviciosWSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Generacion de web sites dinamico
Generacion de web sites dinamicoGeneracion de web sites dinamico
Generacion de web sites dinamico
 
Web api, más allá del 'hola mundo'
Web api, más allá del 'hola mundo'Web api, más allá del 'hola mundo'
Web api, más allá del 'hola mundo'
 
Introducción a SignalR
Introducción a SignalRIntroducción a SignalR
Introducción a SignalR
 
Barcamp v5 by Jose ToNy Verdin at Culiacan Sinaloa
Barcamp v5 by Jose ToNy Verdin at Culiacan SinaloaBarcamp v5 by Jose ToNy Verdin at Culiacan Sinaloa
Barcamp v5 by Jose ToNy Verdin at Culiacan Sinaloa
 
Aplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalRAplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalR
 
presentation_4932_1510780314.pdf
presentation_4932_1510780314.pdfpresentation_4932_1510780314.pdf
presentation_4932_1510780314.pdf
 
Citrix HDX como integrarlo con Microsoft Lync
Citrix HDX como integrarlo con Microsoft LyncCitrix HDX como integrarlo con Microsoft Lync
Citrix HDX como integrarlo con Microsoft Lync
 

Más de StarTech Conference

Más de StarTech Conference (12)

Mike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to youMike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to you
 
Scott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árbolesScott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árboles
 
Ravi Mynampaty - developing findability standards
Ravi Mynampaty - developing findability standardsRavi Mynampaty - developing findability standards
Ravi Mynampaty - developing findability standards
 
Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Abraham Barrera - dev-cross-mobile
Abraham Barrera - dev-cross-mobileAbraham Barrera - dev-cross-mobile
Abraham Barrera - dev-cross-mobile
 
Eduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhereEduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhere
 
Stephanie Rewis - css-startech
Stephanie Rewis -  css-startechStephanie Rewis -  css-startech
Stephanie Rewis - css-startech
 
Rey Bango - HTML5: polyfills and shims
Rey Bango -  HTML5: polyfills and shimsRey Bango -  HTML5: polyfills and shims
Rey Bango - HTML5: polyfills and shims
 
Tom Preston Werner - Optimize for happiness
Tom Preston Werner -  Optimize for happinessTom Preston Werner -  Optimize for happiness
Tom Preston Werner - Optimize for happiness
 
Mark ramm To relate or not to relate
Mark ramm   To relate or not to relateMark ramm   To relate or not to relate
Mark ramm To relate or not to relate
 
Greg rewis move-itsession
Greg rewis move-itsessionGreg rewis move-itsession
Greg rewis move-itsession
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 

Último (10)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Markos calderon lecciones aprendidas del desarrollo de un sistema de web conferencing

  • 1. Lecciones Aprendidas del Desarrollo de un Sistema de Conferencias Markos Calderon BigBlueButton Developer mcmarkos86@gmail.com - @markoscalderon
  • 2. Un Sistema de Conferencia Web? BigBlueButton!
  • 3. Open Source • BigBlueButton es un proyecto open source de conferencias web para la educación a distancia • 1068 subscritos en la lista de correo de desarrollo • Comunidad activa: +14000 mensajes • +3 años de desarrollo • Traducido en mas de 35 idiomas • Google Summer of Code 2010 • 9 releases • Installation in 30 minutes!
  • 8. Integraciones / Plugins API create join isMeetingRunning End GetMeetings GetMeetingInfo
  • 9. API • Formato del API: http://yourserver.com/bigbluebutton/api/[call]?[params] • Seguridad: – Security Salt (checksum SHA-1) • Llamadas del API: create?name=Test&meetingID=test01&record=true&checksum=1234 • Respuesta:
  • 11. Redis • Una base de datos rápida, ligera, clave-valor. >> SET foo bar => OK >> GET foo => bar
  • 12. Guardar un evento? A Map of values { module: Chat event: SendPublicMessage user: markos message: hola! timestamp: 122434 …. }
  • 13. Por que? • Busquedas • Indexar • Procesamiento
  • 14. Tres pasos y a guardar! => INCR <eventID> >> eventID -> 100 => HMSET <meetingID>:eventID> {keys:values} >> demo:100 { module:Chat, event:… } => LPUSH <meetingID>:events <eventID> >> demo:events 100
  • 15. Comunicación entre módulos BBB-APPS BBB-WEB Encargado del Encargado del tiempo real BigBlueButton API Actualizaciones: Estado de una Conferencia Participantes Conversión de Presentaciones
  • 16. Mensajes • Protocolo PUBSUB • Uso de comandos de Redis: PUBLISH y SUBSCRIBE • Los mensajes son publicados en “canales”
  • 17. Usando Redis pubsub Publisher: //an update is published redis.publish( “channel:participants”, “{ meetingID:conf123, type:USER_LEFT,… }” ); Subscriber: redis.subscribe(“channel:participants”, updatesHandler); //The updatesHandler class UpdatesHandler{ onMessage(String channel, String message){ //process the message of channel:participants //{ meetingID:conf123, type:USER_LEFT,… } } }
  • 19. HTML5 Playback • Al principio, escribimos nuestra propia solucion en javascript puro. Problems: – Codigo complejo – dificil de mantener – Compatibilidad en todos los browsers – Soporte para nuevos modulos • Ahora, usamos popcorn.js
  • 21. Mas info acerca de BBB? • http://bigbluebutton.org/ bigbluebutton-blog @bigbluebutton /bigbluebutton