My favorites | Sign in
Project Logo
                
Search
for
Updated Jun 27, 2008 by gdegirodon
Connection  

Introduction

Cette api a pour but de simplifier la gestion de la connection entre un client swf et un server de type flash media server (fmsi,red5 etc...). Le squelette de cette api repose sur la class RTMPConnection qui étend la class NetConnection.

Nous allons voir ici différent type de connexion possible.


Se connecter en localhost

top

Nous allons voir comment nous connecter sur une application qui se nomme test en local.

import gauthier.net.flashmediaserver.RTMPConnection;
import gauthier.net.rtmp.events.RTMPEvent;

private var __nc:RTMPConnection;
private function init():void{
__nc= new RTMPConnection();
__nc.addEventListener(RTMPEvent.SUCCESS, onConnect);
__nc.addEventListener(RTMPEvent.FAILED, onFailed);

__nc.application="test";

__nc.connection();
}

private function onConnect(e:RTMPEvent):void{
 trace("yeahhh je suis connecté");
}
private function onFailed(e:RTMPEvent):void{
 trace("arf, j'ai du me planter quelque part");
}

Pur se connecter sur une instance de test (exemple toto) rien de plus facile il vous suffit de faire :

__nc.application="test/toto";

Se connecter en distant

top

Nous allons voir comment à notre application test mais cette fois ci sur un server distant.

Pour se faire il nous suffit juste de rentrer l'ip du server (nous reprenons le code précédent).

__nc= new RTMPConnection("mon.serverdistant.com");

OU

__nc.ip="mon.serverdistant.com";

Imaginons que le server se trouve sur un port différent que le port 1935 (le port par défaut) par exemple sur le port 8888, nous pouvons le spécifié comme ceci

__nc= new RTMPConnection("mon.serverdistant.com",8888);

OU

__nc.port=8888;

Se connecter en administrateur

top

Pour se connecter en administrateur il nous suffira de rentrer notre login et mot de passe d'administration lors de la connection comme ceci :

import gauthier.net.flashmediaserver.RTMPConnection;
import gauthier.net.rtmp.events.RTMPEvent;

private var __nc:RTMPConnection;
private function init():void{
__nc= new RTMPConnection();
__nc.addEventListener(RTMPEvent.SUCCESS, onConnect);
__nc.addEventListener(RTMPEvent.FAILED, onFailed);
__nc.connection("monlogin", "monpassword");
}

private function onConnect(e:RTMPEvent):void{
 trace("yeahhh je suis connecté");
}
private function onFailed(e:RTMPEvent):void{
 trace("arf, j'ai du me planter quelque part");
}

Par défaut le port de connection a l'administration est 1111 mais vous pouvez toutefois changé ce dernier en indiquant comme précedemment le port de la connexion. Dans l'exemple suivant nous nous connectons en admin sur notre server local sur le port 8888 :

import gauthier.net.flashmediaserver.RTMPConnection;
import gauthier.net.rtmp.events.RTMPEvent;

private var __nc:RTMPConnection;
private function init():void{
__nc= new RTMPConnection();
__nc.addEventListener(RTMPEvent.SUCCESS, onConnect);
__nc.addEventListener(RTMPEvent.FAILED, onFailed);

__nc.port=8888;

__nc.connection("monlogin", "monpassword");
}

private function onConnect(e:RTMPEvent):void{
 trace("yeahhh je suis connecté");
}
private function onFailed(e:RTMPEvent):void{
 trace("arf, j'ai du me planter quelque part");
}

Protocole rtmp

top

Nous pouvons specifier différent protocol rtmp pour nous connecter au server flash media. Par défaut le protocole est rtmp, mais il en existe d'autre en voici la liste :

  • RTMP protocole par défaut (port par défaut 1935)
  • RTMT protocole tunneling http (port par défaut 80)
  • RTMS protocole securisé ssl (port par défaut 443)
  • RTMPE protocole sécurise uniquement valable avec flash media server 3 (port par défaut 1935)
  • RTMPTE protocole sécurise sous tunneling http uniquement valable avec flash media server 3 (port par défaut 80)

pour changer le protocol de la connection ici nous mettrons le nouveau protocol rtmpe voici comment procédé :

import gauthier.net.rtmp.RTMPConnection;
import gauthier.net.rtmp.events.RTMPEvent;
import gauthier.net.rtmp.RTMPProtocol;

private var __nc:RTMPConnection;
private function init():void{
__nc= new RTMPConnection();
__nc.addEventListener(RTMPEvent.SUCCESS, onConnect);
__nc.addEventListener(RTMPEvent.FAILED, onFailed);

__nc.protocol=RTMPProtocol.RTMPE;

__nc.connection();
}

private function onConnect(e:RTMPEvent):void{
 trace("yeahhh je suis connecté");
}
private function onFailed(e:RTMPEvent):void{
 trace("arf, j'ai du me planter quelque part");
}

Passer un ou plusieurs arguments lors de la connexion

top

Souvent lors de la mise en place d'une application en relation avec un server flash media nous devons passer des arguments lors de la connection. Avant nous procdédions ainsi :

var __nc:NetConnection= new NetConnection()
__nc.connect("rtmp://localhost/test", param1,param2, param...);

Afin d'utiliser cette fonction avec notre api nous devons passer par une méthode addClientParam comme ceci :

__nc.addClientParam(param1,param2, param...);

Ces param seront envoyé lors de la connexion

__nc.addClientParam(param1,param2, param...);
__nc.connection() //se connect en passant les argument param1, param2, param...

Se connecter en utilisant un fichier de configuration externe

top

Nous pouvons configurer notre connection a l'aide de fichier ou données externe. Pour commencer nous allons voir comment utiliser un fichier xml pour configurer notre connection

fichier xml
<config>
	<ip>localhost</ip>
	<port>1935</port>
	<protocol>rtmp</protocol>
	<application>test</application>
	<maxattempt>5</maxattempt>
	<delay>1</delay>
	
	<login>mon login</login>
	<password>mon password</password>
</config>

Ici nous voyons le squelette d'un fichier xml de configuration. Vous voyez 3 noeud qui n'ont pas encore était étudier jusqu'a maintenant je vais les detaillé ici même. Ces noeud s servent a la configuration de l'auto connect. Cette fonctionnalité sert a se reconnecter automatiquement a une application si nous perdons la connexion avec le server ou l'application. Nous pouvons evidemment configurer ces propriété directement dans le code.

Maintenant que nous avons notre fichier xml il nous faut l'assigner a notre connexion. Voici un exemple de chargement et d'assignation d'une configuration a notre connexion :

import gauthier.net.rtmp.events.RTMPEvent;
import gauthier.net.rtmp.RTMPConnection;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
private function init():void{
   __nc= new RTMPConnection();
   __nc.addEventListener(RTMPEvent.SUCCESS, onSuccess);
   __nc.addEventListener(RTMPEvent.FAILED, onFailed);
   __nc.addEventListener(RTMPEvent.REJECTED, onReject);
   
   loadConfiguration();		
}


///ici je lance le chargement
private function loadConfiguration():void{
   var uld:URLLoader= new URLLoader()
   uld.addEventListener(Event.COMPLETE, onComplete);
   uld.load(new URLRequest("myconfig.xml"));
}
///une fois le fichier chargé je l'envois a ma connection et je fais la connection
private function onComplete(e:Event):void{
   __nc.loadConfig((e.target as URLLoader).data);
   __nc.connection();
}

private function onConnect(e:RTMPEvent):void{
   trace("yeahhh je suis connecté");
}
private function onFailed(e:RTMPEvent):void{
   trace("arf, j'ai du me planter quelque part");
}

Par défaut notre objet RTMPConnection prend en charge les fichier xml de configuration, mais il est tout a fait possible d'utiliser d'autre format, comme nous allons voir maintenant. Nous allons utiliser un fichier de configuration en JSON. voici son implémentation.

fichier JSON
{ 
"ip" : "localhost",
"port" : 8888,
"protocol" : "rtmp",
"application" : "test",
"maxattempt"  : 5,
"delay" : 1,
"login" : "mon login",
"password" : "mon password"
}

Nous allons cette fois ci assigner une configuration JSON. Voici comment l'implémenter :

import gauthier.net.rtmp.config.FMSConfigFactory;

import gauthier.net.rtmp.events.RTMPEvent;
import gauthier.net.rtmp.RTMPConnection;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
private function init():void{
   __nc= new RTMPConnection();
   __nc.addEventListener(RTMPEvent.SUCCESS, onSuccess);
   __nc.addEventListener(RTMPEvent.FAILED, onFailed);
   __nc.addEventListener(RTMPEvent.REJECTED, onReject);
   
   loadConfiguration();		
}


///ici je lance le chargement
private function loadConfiguration():void{
   var uld:URLLoader= new URLLoader()
   uld.addEventListener(Event.COMPLETE, onComplete);
   uld.load(new URLRequest("myconfig.xml"));
}
///une fois le fichier chargé je l'envois a ma connection et je fais la connection
private function onComplete(e:Event):void{
   __nc.configType=FMSConfigFactory.JSON;

   __nc.loadConfig((e.target as URLLoader).data);
   __nc.connection();
}

private function onConnect(e:RTMPEvent):void{
   trace("yeahhh je suis connecté");
}
private function onFailed(e:RTMPEvent):void{
   trace("arf, j'ai du me planter quelque part");
}

et voila :) . Evidemment vous pouvez creer plusieurs type de fichier en remaniant la class FMSConfigFactory.


Sign in to add a comment
Hosted by Google Code