Post on 22-Nov-2014
description
Lecciones Aprendidas del Desarrollo de un Sistema de Conferencias
Markos CalderonBigBlueButton 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
createjoin
isMeetingRunningEnd
GetMeetingsGetMeetingInfo
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-APPSEncargado del
tiempo real
BBB-WEBEncargado del
BigBlueButton API
Actualizaciones:Estado de una Conferencia
ParticipantesConversión de Presentaciones
Mensajes
• Protocolo PUBSUB• Uso de comandos de Redis: PUBLISH y
SUBSCRIBE• Los mensajes son publicados en “canales”
Usando Redis pubsubPublisher:
//an update is publishedredis.publish(
“channel:participants”, “{ meetingID:conf123, type:USER_LEFT,… }”
);
Subscriber:
redis.subscribe(“channel:participants”, updatesHandler);
//The updatesHandlerclass 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