Tutorial – Como conectar uma aplicação Flex em Red5

Translate to english

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.

11 Responsesto “Tutorial – Como conectar uma aplicação Flex em Red5”

  1. Criar site says:

    Parabéns, excelente post!

  2. guccishoes says:

    Thanks for making such a valuable blog, sincerely Kobos Mathers.

    Gucci Shoes

  3. Gucci Shoes says:

    Thanks for posting this it was note for a paper I am at this time writing for my finals. Thanks

    Discount Gucci Shoes

  4. 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!

  5. Josafá Braz says:

    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á

  6. 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.

  7. walter says:

    consigo me conectar mas o call me retorna erro NetConnection.Call.Failed ele não consegue achar o método porque será?

Leave a Reply

Your email address will not be published. Required fields are marked *

*


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">