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/
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
Fala Victor, obrigado pelo comentário.
Me mande um e-mail definindo melhor como você quer fazer isso.
daniel@flexbrasilia.com.br
Abraço