sábado, 18 de outubro de 2008

Tutorial RED5 Parte 2

Parte 2 Desenvolvendo aplicação Demo


Continuando o Tutorial vou ensinar a criar uma nova aplicação, para referência pode-se usar os tutorias do flashExtensions da ultima postagem http://www.flashextensions.com/tutorials.php O migration guide http://www.joachim-bauch.de/tutorials/red5/MigrationGuide.txt e o HOW TO build new applications http://www.joachim-bauch.de/tutorials/red5/HOWTO-NewApplications.txt


Para IDE eu sugiro o Eclipse mas se vc quiser criar na Unha(nesse caso te invejo ) ou usando NETbeans ou o que seja sinta-se a vontade


A forma mais simples de se criar uma aplicação e copiando outra, geralmente há a aplicação test, copia e renomeie para o nome que qusier neste caso usaremos o nome exemplo


Estrutura de pastas


Na pasta webapps estará todas as suas aplicações por hora


Cada aplicação Deve/pode ter a pasta WEB-INF e Streams(Pode ter outro nome como podemos ver em outro tutorial)


Na WEB-INF teremos nosso binários e fontes dentro da WEB-INF temos lib,src,classes


Na lib colocaremos qlqr jar de referência que necessitarmos


Na classes teremos nossos binários


Na src nossos fontes (.java)


Desenvolvendo o Red5 com eclipse



  • Copie a pasta webapps/test ou crie uma nova pasta com o nome da sua aplicação no nosso caso exemplo,dentro da pasta devemos ter a pasta WEB-INF.Na WEB-INF devemos ter as pastas classes,streams e lib

  • No eclipse selecione o workspace para ser webapps e crie um novo projeto a partir do existente na pasta da aplicação

  • Na pasta do seu projeto clique com o botão direito,build path >configure build path clique em libraries, add external jars e adcione o red5.jar

  • Ainda em configure build path clique em source e vá em Default output folder e coloque a pasta WEB-INF/classes

  • clique com o direito WEB-INF/src>build path e va em use as source folder ou em configure build path novamente e coloque o WEB-INF/src como source folder, o icone deverá mudar

  • Crie um novo package algo como br.com.exemplo e nesse package crie uma classe com o nome de TesteExemplo


Agora preparamos o PROJETO vamos preparar os arquivos



Arquivos importantes


web.xml Arquivo principal de configuração copie-o do teste
Mudaremos algumas coisas procure a parte que diz
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/test</param-value>
</context-param> e mude o test para exemplo isso dirá ao red5 como acessar nossa aplicação


red5-web.xml Esse arquivo é vital , uma leve adaptação dele será no futuro o que exportaremos para o tomcat, partes importantes dele são o bean com o id de web.scope e o bean com o id de web.handler


No bean web.scope nós temos coisas relevantes ao ACESSO a nossa aplicação, enquanto ela está rodando no red5 como um serviço podemos usar o arquivo red5-web.properties para estocar algumas variáveis(ainda não testei isso no Tomcat)


Caso optemos por usar variáveis nesse arquivo a referência a ela estará na parte do bean de id "placeholderConfig" onde o value é o caminho a apartir da nossa aplicação pro arquivo properties


Voltando ao web.scope nesta parte nos temos:


<property name="server" ref="red5.server" /> Referência ao servidor global do red5(não mecha)


<property name="parent" ref="global.scope" /> Escopo Pai normalmente é o global.scope


<property name="context" ref="web.context" /> Contexto desse escopo referencia o no com msm id


<property name="handler" ref="web.handler" /> Handler, ponto de entrada referência nó com o msm id


<property name="contextPath" value="${webapp.contextPath}" /> Nome de acesso da aplicação no nosso caso exemplo, o valor poderia ser "/exemplo" ou como está ${webapp.contextPath} nesse caso estamos puxando esse valor do red5-web.properties


<property name="virtualHosts" value="${webapp.virtualHosts}" /> Hosts de acesso novamente estamos referenciando o red5-web.properties são os servidores ao qual permitimos acesso a essa aplicação poderia ser por exemplo:
*,localhost, localhost, 127.0.0.1, localhost:1935


red5-web.properties Esse arquivo referênciado pela tag <bean id="placeholderConfig"> do red5-web.xml configura variáveis externas no nosso caso temos as variaveis contextPath e virtualHosts no caso, a sintaxe eh NOME_DA_VARIAVEL=VALOR e só, separe-as por new line , no nosso caso algo assim:


contextPath=/exemplo
virtualHosts= *,localhost, localhost, 127.0.0.1, localhost:1935


O bean de id web.handler diz onde está a classe que cuida das requisições(podemos ter services que seriam outras classes tbm mas por hora vamos apenas usar este handler) o atributo class diz onde está o caminho no package pra nossa aplicação por exemplo no nosso caso br.com.exemplo.TesteExemplo, e o atributo singleton diz se ele é um singleton(criado apenas uma vez) ou não



Agora podemos criar nossa aplicação estando tudo preparado


Desenvolvendo a aplicação propriamente dita


Na sua aplicação extenda org.red5.server.adapter.ApplicationAdapter provavelmente vc terá que exportar alguns jars que estarão em Red5/lib


Coloque um método público como soma do red5 algo como isso aqui:
public Double soma(Double num,Double outroNum){
return num+outroNum;
}


Terminamos a parte do servidor


Lado cliente da aplicação


Para os leigos em comunicação com servidor em flash nos usaremos a classe netConnection que fará uma conexão RTMP, que é o protocolo de acesso usado pelo Red5(tpo http,ftp,https etc), com o servidor abaixo o código comentado



nc = new NetConnection();//Cria o objeto
nc.connect("rtmp://localhost/exemplo");//Se conecta ao exemplo O nome que colocamos como acesso
nc.onStatus= function (obj){//Funcao que lida com a conexao
switch(obj.code){
case "NetConnection.Connect.Success"://Ao se conectar com sucesso chamamos o metodo
nc.call("soma", nc, 3.0, 2.5);
break;
default:
trace("Deu algum pal "+obj.code);
}
nc.onResult = function(obj) {
trace("Resultado: " + obj);//Recebemos o retorno do metodo deve imprimir 5.5
}


É isso ae qlqr duvida comentem, publicarei outras coisas sobre Red5 caso alguem leia ou peça

Nenhum comentário: