El documento resume las lecciones aprendidas del desarrollo de BigBlueButton, un sistema de conferencias web de código abierto. BigBlueButton usa Redis para almacenar eventos de las conferencias, comunicarse entre módulos y actualizar el estado en tiempo real. El documento también describe cómo BigBlueButton implementó la reproducción de presentaciones a través de HTML5 usando la biblioteca Popcorn.js para mejorar la compatibilidad entre navegadores.
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!
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