Open Source Flash Server Miranda <ternstor@inf.utfsm.cl> Departmento de Informática Universidad Técnica Federico Santa María 11.10.2008 / openmind 2008 : Open Source Flash Server
Alto! Contexto Tecnologías Funcionamiento Adobe no funciona en 64-bits. Flash Player (Tamarin VM). Flex (Java), IDEs y otros no. : Open Source Flash Server
Porque Flash y Flex? Contexto Tecnologías Funcionamiento Audio/Video en la web 2.0. Flash no esta enfocado a aplicaciones, aparece Flex. : Open Source Flash Server
Porque? Contexto Tecnologías Funcionamiento Coordinación entre aplicaciones Flash/Flex. $ Flash Media Server Distinto enfoque a AJAX, contenido es distinto. RTMP, AMF. : Open Source Flash Server
Flex Contexto Tecnologías Funcionamiento Programadores tradicionales no funcionan bajo paradigma Flash. Flex es solo código, orientado a aplicaciones. Modelo por capas, facil de integrar. Open Source: Mozilla Public License : Open Source Flash Server
Contexto Tecnologías Funcionamiento Versión Open Source (LGPL) de FMS. Escrito en Java, provee Servlets para mayor control. Interfaz Web. : Open Source Flash Server
RTMP Contexto Tecnologías Funcionamiento Reverse-Engineered, pero con ayuda de Adobe. Asincrónico (No pooling). Funciona sobre TCP, headers pequeños y gran payload. Entrecortado con varios clientes. Datos empaquetados como AMF. Puede ser empaquetado sobre HTTP y HTTPS para omitir firewalls. : Open Source Flash Server
AMF Contexto Tecnologías Funcionamiento AMF: ActionScript Media Format, empaque para transmisión y representación de datos. Tipos de datos objetuales. Interesante: AMFPHP provee Remoting, no es un server. : Open Source Flash Server
Componentes de Conceptos Servlets Spring Framework: MVC, ORM, Programación con Interfaces, Exception Control, Inversion of Control, etc. Jetty: Java Web Server y Servlet Server. Log4j: Apache Logging Services. : Open Source Flash Server
Algunos objetos importantes Conceptos Servlets Scopes: Definen un ámbito compartido para un grupo de clientes para el acceso a recursos. Son jerárquicos y hederables. Si un cliente está conectado a un Scope, también esta conectado a sus padres. Context: ruta. : Open Source Flash Server
Estructura Conceptos Servlets Estructura de un Servlet /opt/red5/webapps/demo1 -- WEB-INF -- classes/org/red5/server/webapp/demo1 -- Application.class -- lib -- demo1.jar -- log4j.properties -- red5-web.properties -- red5-web.xml -- src/org/red5/server/webapp/demo1 -- Application.java -- web.xml : Open Source Flash Server
Configuraciones Conceptos Servlets log4j.properties: Configuraciones de logging para la aplicación. red5-web.properties: Constantes usadas por red5-web.xml red5-web.xml: Especifica los manejadores de Contexto y Scope, junto con la aplicación. web.xml: Cargada por Jetty y parte de la especificación de un Servlet. Carga los otros 3 archivos. : Open Source Flash Server
Remoting (1) Remoting Shared Objects Otros Remoting consiste en invocar a una función que se ejecuta remotamente, y devuelve el resultado a través de la red. demo1.fla nc = new NetConnection(); nc.connect("rtmp://localhost/demo1"); nc.onresult = function(obj) { trace(obj); } nc.call("echo", nc, "hola mundo"); nc.call("add", nc, 3, 6) nc.close; : Open Source Flash Server
Remoting (2) Remoting Shared Objects Otros Es similar a RPC. demo1.java package org.red5.server.webapp.echo; import org.red5.server.adapter.applicationadapter; public class Application extends ApplicationAdapter { public Object echo(object param) return param; } public double echo(double x, double y) return x + y; : Open Source Flash Server
Remote Shared Objects (1) Remoting Shared Objects Otros Son variables compartidas entre aplicaciones Flash en forma transparente. Son similares a cookies. Objetos de tuplas llave=valor. Son creados por los clientes, no es necesario código para ellos en el Servlet. : Open Source Flash Server
Remote Shared Objects (2) SimpleBallControl.fla Remoting Shared Objects Otros import mx.utils.delegate; dragging = false; nc = new NetConnection(); nc.connect("rtmp:///demo1"); so = SharedObject.getRemote( "soname", nc.uri, false); so.onsync = Delegate.create(this, newm); so.connect(nc); logo.onpress = Delegate.create(this, startm); logo.onrelease = Delegate.create(this, stopm); function startm():void { logo.startdrag(); dragging = true; } function stopm():void { dragging = false; stopdrag(); } function onenterframe():void { if(!dragging) return; so.data.mp = {x: logo._x, y:logo._y}; } function newm(evtobj) { if(dragging) return; logo._x = so.data.mp.x; logo._y = so.data.mp.y; } : Open Source Flash Server
Streaming Remoting Shared Objects Otros SimpleStreamPlayer.fla var nc:netconnection = new NetConnection(); nc.connect("rtmp://localhost/oflademo"); var ns:netstream = new NetStream(nc); videocontainer.attachvideo(ns); playbutton.addeventlistener("click", this); function click():void { ns.play("inti_utfsm.flv"); } : Open Source Flash Server
Un poco de Flex Remoting Shared Objects Otros MXML: Dialecto de XML para especificar interfaces. Veamoslo en acción... : Open Source Flash Server
Referencias Website: http://osflash.org/red5 John Grden Blog: http://www.rockonflash.com/blog A brief introduction to IoC: http://today.java.net/pub/a/today/2004/02/10/ioc.html http://jwamicha.wordpress.com/category/red5/ : Open Source Flash Server
Preguntas : Open Source Flash Server