Conectando Red5 e AMFPHP

O que muitos aguardavam finalmente saiu, um tutorial de como conectar um servidor Red5 ao AMFPHP.

Rajdeep Rath do flashvisions.com criou a solução para seu próprio problema e resolveu contribuir à comunidade Red5 com um tutorial em seu site de como conectar Red5 e AMFPHP.

Eu apenas pedi permissão para traduzir o tutorial dele, não testei, mas pelo que vi deve funcionar.
Link para o post original.
Segue a tradução:

Eu vejo sempre a necessidade de interagir com um banco MySQL através do Red5. Muita gente sugere usar JDBC, apesar de uma sugestão mais do que válida, é uma grande dificuldade para quem não desenvolve em Java. Muita gente sugere conectar ao amfphp diretamente da aplicação Flex/Flash, mas com certeza não é a forma mais correta de se fazer quando se quer uma aplicação segura.

Aqui vai como fazer o Java conversar com o php.

Primeiramente baixe uma cópia do amfphp 1.2 do Sourceforge (tem que ser a versão 1.2 pois a 1.9 não é compatível com a decodificação amf do Red5).

Passo 1. Configure o amfphp gateway na raiz do teu servidor como:

http://localhost/amfphp

Veja aqui como configurar o serviço amfphp.

Passo 2. Baixe e instale o servidor Red5 e crie uma nova aplicação. (veja aqui como instalar e configurar um servidor Red5 e aqui como criar uma aplicação simples para o Red5 (mais exemplos e tutoriais).

Passo 3. Crie uma nova classe de serviço php com o nome Red5Service.php no diretório ../services do amfphp como esta:

<?php
class Red5Service
{
 
	function  Red5Service()
	{
		$this->methodTable = array(
			"login" => array(
				"description" => "login user -> returns true/false",
				"access" => "remote",
				"arguments" => array ("username","password")
				),
			"logout" => array(
				"description" => "logout user -> returns nothing",
				"access" => "remote",
				"arguments" => array ("username")
				)
			);
	}
 
	function login($username,$password)
	{
		return true;
	}
 
	function logout($username)
	{
		return;
	}
}
?>

Passo 4 – No método connect da sua aplicação Red5 coloque uma chamada ao serviço amfphp como abaixo:

@Override
public boolean connect(IConnection conn, IScope scope, Object[] params)
{
	try
	{
		RemotingClient client = new RemotingClient("http://localhost/amfphp/gateway.php");
		Object[] args = new Object[]{‘rajdeep’,‘xyz123'};
		Object result = client.invokeMethod("Red5Service.login", args);
 
		if(!result.equals(true)) return false;
	}
	catch (IOException e)
	{
		return false;
	}
	return true;
}

Como você verá, quando um usuário conectar à aplicação Red5, será feita uma conexão ao gateway amfphp mandando os parâmetros ‘rajdeep’ e ‘xyz123′ como argumentos. O amfphp pode fazer o que for necessário e retornar uma expressão booleana (true ou false).
Se o Red5 receber true ele permite que seja feita a conexão, caso contrário, rejeita a conexão. Veja que ele usou um bloco try/catch para garantir que caso não seja possível a conexão com o amfphp o cliente será rejeitado de qualquer maneira.

Taí o básico, experimente mandar para o amfphp parâmetros recebidos da aplicação Flex/Flash e acessar o banco de dados. ;)

Valeu Rajdeep o/

2 Responsesto “Conectando Red5 e AMFPHP”

  1. victor says:

    Parabens pelo blog .. mto bom .. era oque precisavamos … alguem expert em red5 no brasil

    acompanharei ele …

    Vc tem algum exemplo de como fazer um sistema de gravaçao de video pelo red5? se possivel com limitaçao de tempo tipo . possivel gravar somente 5 min de video

    Abraços

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="">