S'inscrire |

 
Avatar de Adddvancer
Adddvancer est déconnecté Sexe Non renseigné 03/07
XP de Adddvancer 49 Nombre total de messages de Adddvancer
Membre
  #1 (permalink)  
Vieux 24/04/2007, 17h55
Zoom [Flash communication server 1.5] Méthode call

Salut à vous..
Un premier post sur une question assez récurente.. Une méthode de communication simple entre Flash communication server et votre application, via la méthode call.

La méthode call côté serveur sera associé à l'objet Client. Prenons un exemple.

Côté serveur [main.asc] :

ActionScript Code:
  1. //---------------------------------------
  2. application.onConnect = function(clientObj) {
  3.      this.acceptConnection(clientObj);
  4.      clientObj.call("addition"null, 50, 10);
  5. }
  6. //---------------------------------------
  7.  

Lorsque vous lancez votre application, une liaison est alors établi avec le serveur et le gestionnaire d'évènement onConnect de notre application est alors appelé. Le premier paramètre de ce gestionnaire est l'instance du client qui cherche à ce connecter. Ici nous acceptons sa connection sans contrôle particulier de status.

Ici, la méthode call sert à lancer des fonctions sur le client connecté.
Son premier paramètre est le nom de la méthode appellée. Le second paramètre donne la possibilité d'envoyer un objet de résultat, mais on verra cela par la suite...
Ici, nous laissons ce paramètre sur null car notre méthode somme n'a pas d'information à renvoyer ensuite au serveur.
Ensuite, l'on peut passer autant de paramètres que l'on veut. Ici, juste deux chiffres à aditionner suffiront.

Voyons maintenant ce qui ce passe côté client :

ActionScript Code:
  1. //---------------------------------------
  2. // Instance de l'objet NetConnection
  3. nc = new NetConnection();
  4.  
  5. // Méthode associée à l'objet NetConnection
  6. nc.addition= function(v1, v2) {
  7.      trace(v1+v2);
  8. }
  9.  
  10. // Connection au serveur FCS via rtmp
  11. nc.connect("rtmp://localhost/exo");
  12. //---------------------------------------
  13.  

Côté client, la méthode somme est associé à notre instance de NetConnection.
Si vous testez votre application, nous lui envoyons bien deux paramètres, que notre méthode va donc ensuite aditionner.

Bon essayons maintenant de faire l'inverse.. Nous allons appellé une méthode, côté serveur, et récupérer après côté client un objet Résultat, qui nous permettera, ben.. d'exploiter ce résultats

Côté client :

ActionScript Code:
  1. //---------------------------------------
  2. // Instance de l'objet NetConnection
  3. nc = new NetConnection();
  4. // Connection au serveur FCS via rtmp
  5. nc.connect("rtmp://localhost/exo");
  6.  
  7. // Méthode call
  8. nc.call("addition", new resultat(), 20, 50);
  9. //---------------------------------------
  10.  

Ici, c'est notre instance NetConnection qui appelle une méthode côté serveur, en lui envoyant trois paramètres.
En deuxième paramètre, ici, nous déclarons en plus un objet resultat que nous construirons plus tard pour récupérer ce que nous renverra le serveur.

Côté serveur :

ActionScript Code:
  1. //---------------------------------------
  2. application.onConnect = function(clientObj) {
  3.  
  4.      this.acceptConnection(clientObj);
  5.  
  6.      clientObj.addition= function(v1, v2) {
  7.            return (v1+v2);
  8.      }
  9. }
  10. //---------------------------------------
  11.  

Construisons maintenant notre objet de récupération, côté client :

ActionScript Code:
  1. //---------------------------------------
  2. function resultat() {
  3.      this.onResult = function(Val) {
  4.            trace("La somme est : "+Val);
  5.      };
  6. }
  7. //---------------------------------------
  8.  

Deux méthodes sont disponibles pour cette objet de récupération. La méthode onStatus et onResult. Ici, nous utilisons la méthode onResult qui est appellé dès l'arrivée du résultat et stocké dans son paramètre, ici "val".

A noter dans l'exemple au dessus qu'il est possible de déclarer de 2 autres façons l'objet qui permet de récupérer la valeur transmise par la fonction appelée sur le seveur par la méthode call :

- Méthode 1
ActionScript Code:
  1. var url = "rtmp://localhost/exo" ;
  2. var nc = new NetConnection() ;
  3. nc.connect(url) ;
  4.  
  5. var responder = {} ;
  6. responder.onResult = function( value ) {
  7.       trace ("le résultat est : " + value) ;
  8. }
  9.  
  10. nc.call ("addition", responder, 20, 50) ;

- Méthode 2 : création d'une classe AS1
ActionScript Code:
  1. // ---- Class Responder
  2.  
  3. // ---- Constructor
  4. _global.Responder = function () {}
  5.  
  6. // ---- Methods
  7. Responder.prototype.onResult = function( value ) {
  8.       trace (this + " :: onResult -> le résultat est : " + value) ;
  9. }
  10.  
  11. Responder.prototype.toString = function () {
  12.      return "[Responder]" ;
  13. }
  14.  
  15. // ---- test d'utilisation
  16.  
  17. var url = "rtmp://localhost/exo" ;
  18. var nc = new NetConnection() ;
  19. nc.connect(url) ;
  20. nc.call ("addition", new Responder(), 20, 50) ;

A noter qu'il est possible aussi de coder la classe au dessus en AS2. Mais ceci est une autre histoire.
Réponse avec citation
Réponse

Outils de la discussion

Config des règles de ce forum
Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


A propos d'IK

Infographik alias IK est un forum d'entre-aide dans le domaine de l'infographie numerique
Depuis plus de 10 ans ce forum propose des tutoriaux un espace communautaire francophone.

We need You !

Faire un don permet de régler les frais de fonctionnement du site tel que l'hebergement, le ndd etc...
Faire un don

Fuseau horaire GMT +2. Il est actuellement 02h06.