Red5 - Présentation et première installation

Social BookmarkingApple News MQCD Blinklist Blogmarks Bookmarks del.icio.us Digg Facebook Furl Google Bookmark! Windows Live Favorites ma.gnolia Netvouz Reddit Simpy Spurl StumbleUpon Taggly Wikio Yahoo MyWeb
Écrit par Nicolas PIED
Publié le 22-05-2008 - 7084 hits

Red5 est un serveur open source dont le but est d’interagir avec des lecteurs Macromedia Flash. Le protocole RTMP (pour Real Time Messaging Protocol) est utilisé comme support pour ces échanges mais il est aussi possible d’utiliser AMF , ce qui rend les possibilités applicatives nombreuses.

Logo de Red5


Aujourd’hui, Red5 est de plus en plus utilisé et commence à devenir une alternative possible à Flash Media Server pour des applications de type :

  • e-Learning
  • Visio conference
  • Chat
  • Streaming
Il faut savoir que Red5 propose deux types d’installations :
  • Une installation de Red5 dite « standalone » et qui embarque déjà un serveur Tomcat.
  • Une installation dite « embarquée » au sein d’un serveur de servlets (Tomcat, JBoss, etc.). Cette installation repose sur 3 archives WAR.

Modes d'installations de Red5
Les modes d'installations de Red5

Concernant ce dernier type d’installation, Red5 permet que les applications soient locales ou distantes au serveur.

Cet article aura donc pour but de vous présenter la création d’une application d’exemple déclinée à travers ces 3 cas :

  • Application locale pour un Red5 « standalone »
  • Application locale pour un Red5 « embarqué »
  • Application distante pour un Red5 « embarqué »

 

Environnement utilisé au sein de l’article

Voici l’environnement applicatif utilisé dans la suite de cet article :
Ces éléments seront considérés comme étant correctement installés et fonctionnels pour les prochaines étapes.

Installation de Red5

Installation de Red5 en mode « standalone »

Pour l’installation du serveur Red5 en mode « standalone », il faut dans un premier temps télécharger l’installeur Windows se trouvant à l’adresse :
Au sein de la page de téléchargement obtenue, téléchargez la version Windows « Java 6 version ». Si tous les slots de depositfiles pour votre pays sont pleins, il vous est toujours possible de vous rabattre vers un des serveurs miroirs.

Une fois le téléchargement terminé, il vous suffit tout simplement d’exécuter l’installeur, de valider et de remplir les différentes étapes afin que Red5 soit opérationnel ; enfin presque. La dernière étape étant de démarrer le serveur à l’aide du raccourci « Start Red5 » du menu « Démarrer ».

Le serveur démarré, les applications ci-dessous vous sont alors accessibles. Dans le cas contraire, vous pouvez consulter les journaux situés soit dans la fenêtre de commande ouverte lors du lancement du serveur, soit dans le dossier « logs » situé dans le répertoire d’installation de Red5.

Principaux sites accessibles pour une installation du serveur Red5 en mode « standalone » :

Installation de Red5 en mode « embarqué »

Cette installation, bien qu’elle puisse être réalisée sous un serveur JBoss, ne sera ici présentée que pour un Apache Tomcat 6.x fonctionnant via le JDK 1.6.

Le répertoire « webapps » de Tomcat sera dans la suite de cet article référencé par $WEBAPPS$. Ainsi, $WEBAPPS$ pourrait être un alias possible du répertoire : C:\apache-tomcat-6.0.16\webapps

Pour effectuer cette installation, il faut dans un premier temps télécharger les WAR de Red5, au nombre de trois, à l’adresse : http://osflash.org/red5/070final (choisissez le fichier Red5War_0.7.0.zip ou un des miroirs proposant celui-ci)

Le téléchargement terminé, dézippez l’archive « Red5War_0.7.0.zip » dans un répertoire de votre choix. Son contenu se résume aux trois Web ARchives suivantes :
  • admin.WAR
  • echo.WAR
  • ROOT.WAR
Le package « echo.WAR » n’est en général utilisé qu’à des fins de tests, il ne sera donc pas installé dans le cadre de cet article.

Le package « admin.WAR » correspond, comme son nom l’indique, au panel d’administration RIA du serveur Red5.

Le package « ROOT.WAR » contient qu’en à lui toutes les classes et librairies nécessaires au fonctionnement de Red5 en mode embarqué. Le dossier ROOT, est pour Tomcat, le site racine correspondant à l’adresse : http://localhost:PORT_NUMBER/.

Etape 1 : Etant donné que Tomcat dispose déjà de son propre dossier ROOT au sein de $WEBAPPS$, la première étape consiste donc à supprimer celui-ci ou à le renommer d’une façon différente.

Etape 2 : Suite à cela, il vous suffit de copier les archives « admin.WAR » et « ROOT.WAR » dans le dossier $WEBAPPS$ puis de démarrer votre serveur Tomcat afin que ce dernier les déploie automatiquement.

Si le démarrage du serveur Tomcat s’est bien déroulé, vous devriez maintenant pouvoir accéder :

Création d’une première application Red5

Cette première application sera décomposée en deux parties :
  • Une partie serveur écrite en Java
  • Une partie cliente écrite en Flex
Cette application n’a rien de bien complexe, puisqu’elle repose sur un simple appel à une fonction « echo » ; soit une fonction retournant ce qu’elle a reçu en paramètre. En effet, le but n’est pas ici de montrer les possibilités applicatives de Red5 mais de se familiariser avec les 3 grands types de déploiements possibles.

Téléchargement des sources de l’application

Par la poursuite de cet article, il vous est possible de télécharger les sources des exemples sur le serveur SubVersion de Red5 dont voici l’adresse :
Dans ce repository, se trouvent deux dossiers :
  • « LocalApp » qui correspond à l’exemple d’application pour une installation « locale » à Red5
  • « RemoteApp » qui correspond à l’exemple d’application pour une installation « distante » à Red5

Arborescence des exemples sous SVN
Arborescence des exemples sous SVN
 

L’arborescence de chacun de ces projets est le suivant :

  • /bin : dossier de destination des sources compilées
  • /lib : librairies nécessaires au bon fonctionnement de l’application. On pourra remarquer la présence de la librairie red5.jar permettant une compilation des sources du projet.
  • /src : sources Java et Flex du projet
  • /src/example/NOM_PROJET/ : avec NOM_PROJET correspondant soit à « remoteapp », soit à « localapp » en fonction du projet que vous examinez. Ce dossier contient l’équivalent du « main » pour Red5 ; soit le point d’entrer de l’application côté serveur.
  • /web/WEB-INF : dossier contenant les fichiers de configuration de l’application serveur.
Les dossiers « LocalApp » et « RemoteApp » contiennent aussi les fichiers « .project » et « .flexProperties » qui vont vous permettre respectivement d’importer le projet via Eclipse et Flex Builder 3.

Différences entre les applications locales et distantes

Les deux applications présentent un fonctionnel identique. Les seules différences consistent en la présence de Web ARrchives supplémentaires (dans le dossier lib) pour « RemoteApp ». L’une d’entre elles se nomme « red5-remoting.jar » et est obligatoire dans le cadre d’une application distante. Les autres librairies sont davantage destinées aux fonctionnalités annexes de l’application serveur (les logs par exemple) et sont par conséquent facultatives.

Modification des sources Java : côté serveur

Avant de procéder à la modification des sources Java, il vous faut importer les deux projets sous Eclipse.

Suite à cela, nous allons ajouter une nouvelle méthode de classe, qui réalisera un écho, dans les fichiers Application.java des projets « RemoteApp » et « LocalApp ». Le code source de cette méthode est fourni ci-dessous :
public String echo(String param) {
    return ">> " + param;
}
Mis à part le déploiement de l’application serveur, qui sera présenté plus loin dans cet article, et du fait qu’Eclipse compile automatiquement les sources par défaut, il n’y a donc plus rien à faire pour cette partie côté serveur.

Modification des sources Flex : côté client

Comme indiqué plus haut, les fichiers « .flexProperties » vont vous permettre d’importer les projets sous Flex Builder. Cette tâche réalisée, nous allons maintenant modifier toutes les occurrences de :
nc.call("hello", nc_responder);
Par :
nc.call("echo", nc_responder, "Ma premiere application Red5");
Ce qui aura pour effet d’appeler la méthode de classe « echo », précédemment créée côté serveur, avec pour paramètre « Ma premiere application Red5 ».

La compilation du projet est normalement automatique sous Flex Builder ; vous êtes donc dépourvu de cette tâche.

Si vous ne possédez pas Flex Builder, il vous est toutefois possible d’éditer les fichiers .mxml avec un éditeur de texte quelconque et de les compiler via le compilateur « mxmlc » présent dans le répertoire « bin » du SDK Flex (son téléchargement est gratuit). Voici à titre d’information, la syntaxe permettant la compilation du fichier RemoteApp.mxml utilisé dans un de nos projets :
mxmlc RemoteApp.mxml

Déploiement de notre première application

Déploiement sur le serveur Red5 « embarqué » en mode « local »

Voici la procédure à suivre pour déployer notre application d’exemple « LocalApp », précédemment modifiée, sur le serveur Red5 embarqué sous Apache Tomcat 6 :
  • Copier les fichiers « LocalApp.html » et « LocalApp.swf » du répertoire « bin » dans le répertoire $WEBAPPS$/ROOT de Tomcat 6
  • Copier le répertoire « example » ainsi que le fichier « LocalApp-web.xml » du dossier « bin » vers le dossier « classes » de Red5 ; soit $WEBAPPS$\ROOT\WEB-INF\classes.
Après avoir redémarrer votre serveur Tomcat, vous devriez pouvoir accéder au projet « LocalApp » via l’URL :

Interface Flex du client pour l'application LocalApp
Interface Flex du client pour l'application LocalApp
 

Vous voici donc en présence du client Flex. En cliquant sur le bouton « Connect RTMP », vous devriez obtenir pour réponse : « >> Ma premiere application » ; montrant ainsi un déploiement en local valide et des échanges RTMP client / serveur fonctionnels.

Déploiement sur le serveur Red5 « embarqué » en mode « distant »

Voici la procédure à suivre pour déployer notre application d’exemple « RemoteApp », précédemment modifiée, sur le serveur Red5 embarqué sous Tomcat 6 :

Dossier distant « RemoteApp »
  • Créer un répertoire nommé « RemoteApp » dans le dossier $WEBAPPS$ de Tomcat. Exemple : C:\apache-tomcat-6.0.16\webapps\RemoteApp
  • Copier le contenu du répertoire « web » dans le répertoire « RemoteApp » nouvellement créé.
  • Copier le fichier SWF « RemoteApp.swf » dans le nouveau dossier « RemoteApp ».
  • Copier le dossier « lib » ainsi que son contenu dans le dossier « RemoteApp/WEB-INF »
  • Supprimer de ce dernier dossier la librairie « red5.jar » (celle-ci n’est utile que pour la compilation des sources).
Dossier ROOT de Red5
  • Copier le répertoire « example » ainsi que le fichier « RemoteApp-web.xml » du dossier « bin » vers le dossier « classes » de Red5 ; soit « $WEBAPPS$\ROOT\WEB-INF\classes »
Après avoir redémarrer votre serveur Tomcat, vous devriez pouvoir accéder au projet « RemoteApp » via l’URL :

Interface Flex du client pour l'application RemoteApp
Interface Flex du client pour l'application RemoteApp
 

Vous voici donc en présence du second client Flex. En cliquant sur le bouton « Connect RTMP », vous devriez obtenir pour réponse : « >> Ma premiere application » ; montrant ainsi un déploiement distant valide et des échanges RTMP client / serveur fonctionnels.

Le bouton « Connect HTTP » n’est ici pas fonctionnel étant donné le fait qu’il utilise le protocole AMF qui n’a pas été configuré dans le cadre de cet exemple.

Déploiement sur le serveur Red5 « standalone »

Bien que le fonctionnement général de l’application soit le même, le déploiement de notre exemple, sur le serveur Red5 « standalone », est quelque peu différent. En effet, l’architecture de l’application et certains fichiers de configuration doivent être modifiés.

Intégrées au sein d’un serveur Red5 « standalone », les applications doivent respectées l’arborescence suivante :
  • WEB-INF
  • WEB-INF/classes : classes Java compilées relatives au projet
  • WEB-INF/lib : librairies additionnelles non déjà présentes dans Red5
  • WEB-INF/src : sources Java du projet
Comme la plupart des sites J2EE, les fichiers de configuration se situent dans le dossier WEB-INF et sont au minimum au nombre de 3 :
  • log4j.properties : fichier de configuration des journaux log4j
  • web.xml : configuration du « context », du « listener », des servlets, etc.
  • red5-web.xml : fichier de configuration du site pour Red5 (web.context, web.scope et web.handler)
Les sources du projet Flex, par rapport à cet exemple, devront être situées à la racine du site ; soit au même niveau que le dossier WEB-INF.

Les sources et les binaires de cette application d’exemple sont fournis plus loin dans cet article, vous pouvez vous en servir pour les étudier, pour tester l’application, la modifier ou s’en servir de base à d’autres développements. L’archive ZIP contient le fichier « .project » d’Eclipse, ce qui facilitera son importation dans l’IDE.

Interface Flex du client pour l'application InnerApp
Interface Flex du client pour l'application InnerApp


Un point important à retenir est que les sources Java doivent être liées à la Web ARchive « red5.jar » située dans le dossier d’installation du serveur Red5. Vous devez donc lier cette librairie en tant que JAR externe dans le « Build Path » du projet afin de pouvoir compiler les classes Java dépendantes de Red5.

Conclusion & Références

Ce premier article a donc eu pour but de vous présenter les principaux déploiements possibles sur un serveur Red5. Les sources, fonctionnelles pour une version de Red5 en 0.7, vous sont également fournies afin que vous puissiez les étudiez et pourquoi pas les utiliser en tant que template de base à vos futurs développements.

De futurs articles auront pour but de vous présenter :
  • La création d’une application Red5 en utilisant Maven 2
  • L’utilisation du « Remote Debugging » pour Red5 « standalone ».
Si vous avez des remarques ou des questions relatives à cet article ou à Red5, il vous est possible de me contacter soit en laissant un commentaire, soit en utilisant le formulaire de contact accessible à l’adresse suivante :
Téléchargements :

Liens relatifs à cet article :

Faîtes un commentaire

Nom :
Titre :
Commentaire :

 
300 caractères restants
 
Dernière mise à jour : 22-05-2008