Um dia…. criei minha primeira aplicação Flex + Red5.
E começou assim:
É necessário que o servidor Red5 já esteja instalado (Tutorial como instalar servidor Red5).
Adicionei o projeto do próprio servidor do Red5 no Eclipse (inclusive usei o próprio Flex Builder) para poder debugar as aplicações.
No Eclipse, File->Import->Existing Project into Workspace e aponte para o diretório Red5 instalado no seu computador.
Criei o diretório MyRed5App dentro de ..\Red5\webapps, dentro dele outro diretório chamado WEB-INF e dentro dele o diretório lib.
No Eclipse, perspectiva Java, criei um novo projeto Java:
File->New->Java Project com o nome MyRed5App no meu diretório do Workspace (pode ser qualquer diretório, não precisa ser dentro do ..\Red5 ).
Clique ‘Next’.
Adicionei a biblioteca do red5 ao projeto:
Na aba Libraries->Add Jar->red5_server->red5.jar
Se você não tiver o projeto do servidor red5 no eclipse, basta adicionar como External Jar e apontar para red5.jar no diretório do Red5.
Finish.
Criei meu package br.com.flexbrasilia e em seguida meu arquivo Application.java extendendo ApplicationAdapter (classe do red5.jar), que é a classe padrão do Red5 de adapter para conectar os clientes ao servidor.
package br.com.flexbrasilia; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.red5.server.api.IScope; public class Application extends ApplicationAdapter { //Este metodo eh chamado uma vez quando o servidor inicia. @Override public boolean appStart(IScope scope) { return true; } //Este metodo eh chamado sempre que um cliente tenta se conectar ao servidor. @Override public boolean appConnect(IConnection conn, Object[] params) { return true; } }
Exportei o projeto para diretório ..\Red5\webapps\yRed5App\WEB-INF\lib no servidor servidor:
File->Export->Other->Jar file
Além disso, pro servidor Red5 reconhecer o projeto são necessários 3 outros arquivos de configuração (web.xml, red5-web.xml e red5-web.properties). Basta copiá-los de algum projeto e fazer algumas pequenas alterações.
Em ..\Red5\doc\templates\myapp\WEB-INF você encontra arquivos de template, mas por algum motivo aqui só funcionou quando eu copiei os arquivos de algum projeto demo do servidor. Seguem as alterações:
Em web.xml:
<display-name>My Red5 App</display-name> <context-param> <param-name>webAppRootKey</param-name> <param-value>/MyRed5App</param-value> </context-param>
Em red5-web.xml:
<bean id="web.handler" class="br.com.flexbrasilia.Application" singleton="true" />Em red5-web.properties:
webapp.contextPath=/MyRed5App webapp.virtualHosts=localhost, 127.0.0.1
Pronto, rodei o projeto do servidor do Red5 no modo Debug:
Procure o arquivo StandAlone.java, clique com o botão direito nele e mande Debugar como Java Application.
Como eu tinha colocado um BreakPoint no método appStart da minha aplicação, o Eclipse fez uma paradinha nele, mas como o código fonte do projeto não está dentro do servidor ele não achou o código. Hmmmmm cliquei em Edit Source Path e adicionei o projeto MyRed5App e lá estava o BreakPoint no método appStart. Mandei resumir e pronto, o servidor subiu me confirmando que reconheceu minha aplicação com as linhas:
2010-01-25 06:12:45,360 [main] INFO /MyRed5App - Initializing Spring root WebApplicationContext 2010-01-25 06:12:45,361 [main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started 2010-01-25 06:12:45,405 [main] INFO org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from ServletContext resource [/WEB-INF/red5-web.properties] 2010-01-25 06:12:45,410 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1b8dc93: defining beans [placeholderConfig,web.context,web.scope,web.handler]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@17eae6c 2010-01-25 06:12:45,467 [main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 57 ms
Mudei para a perspectiva do Flex Development no Eclipse, criei o projeto Flex MyFlexApp e para me conectar ao servidor Red5 precisei apenas de 2 métodos:
private var netConnection:NetConnection; private function connect():void { if ( netConnection != null ) netConnection=null; netConnection = new NetConnection(); netConnection.addEventListener( NetStatusEvent.NET_STATUS, netStatus ); netConnection.connect( hostTextInput.text ); netConnection.client = this; } private function netStatus(event:NetStatusEvent):void { switch ( event.info.code ) { case "NetConnection.Connect.Success": Alert.show("Conectou!!"); break; default: Alert.show(event.info.code); } }
Bom, conectou, não fiz nada mas Flex e Red5 já se falam :D
(Update: Como conectar uma aplicação Flex em Red5 – Principais Métodos)
Vou continuar estudando e deixo aqui minhas descobertas em breve.
Baixe aqui o código fonte completo.
Se não conseguir fazer funcionar, entre em contato, deixe um comentário. Se achar algo confuso ou errado, deixe um comentário também hehe.
Parabéns, excelente post!
Thanks for making such a valuable blog, sincerely Kobos Mathers.
Gucci Shoes
Thanks! Happy to help ;)
Thanks for posting this it was note for a paper I am at this time writing for my finals. Thanks
Discount Gucci Shoes
Hey there! I know this is somewhat off topic but I was wondering if you knew where I could locate a captcha plugin for my comment form? I’m using the same blog platform as yours and I’m having trouble finding one? Thanks a lot!
I got mine on the defaul wordpress plug-ins page.
Não consegui conectar o meu projeto no eclipse: “No Eclipse, File->Import->Existing Project into Workspace e aponte para o diretório Red5 instalado no seu computador.”
Não aparece projeto e não ativa os botçoes next/finish, utilizo a versão 3.6 do Eclipse.
se puder me ajudar fico grato.
Josafá
Eu utilizo sempre o Flex/Flash Builder e não tive problema. Provavelmente você precisa instalar algum recurso no Eclipse.
Abraço
Também não estava conseguindo…ai pulei esse passo e lá na frente
“Adicionei a biblioteca do red5 ao projeto:
Na aba Libraries->Add Jar->red5_server->red5.jar
Se você não tiver o projeto do servidor red5 no eclipse, basta adicionar como External Jar e apontar para red5.jar no diretório do Red5.”
Eu adicionei como External Jar e deu certo.
consigo me conectar mas o call me retorna erro NetConnection.Call.Failed ele não consegue achar o método porque será?
Respondi seu e-mail, ok!?