IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Avez vous déjà réalisé un chat avec red5 en as3

Votants
1. Vous ne pouvez pas participer à ce sondage.
  • oui

    0 0%
  • non

    0 0%
  • commencé mais jamais réussi

    1 100,00%
Flash Discussion :

IServiceCapableConnection red5 sans effet


Sujet :

Flash

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Par défaut IServiceCapableConnection red5 sans effet
    Bonjour,

    Je développe un chat avec red5 et de l'as3 (flash developp, flash player 10, java : 1.6.0_23, red5 (peut être la 0.9.1)).

    A l'heure actuelle, ma connection entre mon application flash et mon serveur red5 se fait correctement, je n'ai pas d'erreurs, ni d'un côté, ni de l'autre.

    Lorsque je fais appel à une fonction depuis flash, telle que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nc.call("sendpublicmess",responder, user.pseudo);
    mon serveur red5, appel bien ma fonction flash sendpublicmess en transmettant les bonnes infos.

    Par contre, quand je fais appel, côté java, à des fonctions telles que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (conn instanceof IServiceCapableConnection)
    {
    	IServiceCapableConnection sc = (IServiceCapableConnection) conn;
    	sc.invoke("joinuser", new Object[]{conn.getClient().getId()});
     
            System.out.println("connect IConnection nombre params="+conn);
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    serviceUtils.invokeOnAllConnections (scope, "joinuser", new Object[] {"ok"} );
    ( ou serviceUtils.invokeOnAllConnections ("joinuser", new Object[] {"ok"} ); )
    System.out.println("connect IConnection nombre params="+conn);
    je n'ai aucunes erreurs affichée dans mon terminal, mon message
    connect IConnection nombre params=RTMPMinaConnection from 127.0.0.1 to localhost (in: 3357 out 3073)
    apparait bien dans les deux cas.

    Par contre, côté flash, rien, je n'ai aucune réaction suite à l'appel de ce script.

    Je ne sais pas si mon problème vient de java qui n’envoie pas les données ou de flash qui ne les réceptionnent pas (pbm d'écouteurs ?)

    A noter côté flash, j'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    rtmpString 	= "rtmp://localhost/...."
    this.nc.objectEncoding = 3;
    this.nc.client   = { 
    	onBWDone: function():void { }
    };
    this.nc.addEventListener("netStatus", onNCStatus);
    this.nc.connect(rtmpString, user.pseudo, ...);
     
    public function onNCStatus(event:NetStatusEvent):void {
          trace("Main :: default :: " +event.info.code);
          //-- normalement inutile mais j'ai tt essayé
          responder = new Responder(resultHandler, errorHandler);
    ....
    public function joinuser(idclient:int, ...
    Côté java, j'ai :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public boolean connect(IConnection conn, IScope scope, Object[] params) {
     
    if (conn instanceof IServiceCapableConnection)
    {
    	IServiceCapableConnection sc = (IServiceCapableConnection) conn;
    	sc.invoke("joinuser", new Object[]{conn.getClient().getId(), ...});
     
            System.out.println("connect IConnection nombre params="+conn);
            //-- je passe bien ici
    }
     
    ServiceUtils.invokeOnAllConnections ("joinuser", new Object[] {"ok", ....} );
    serviceUtils.invokeOnAllConnections (scope, "joinuser", new Object[] {"ok",...} );
     
    public boolean joinuser(String vara,String varb,String varc,String vard) {
    	System.out.println("Joinuser");
    	return true;
    }

    A noter, j'ai essay à peu prêt toutes les variantes posssibles, et rien n'y fait, j'ai pas d'erreurs, je peux tout faire à part ça : me connecter au serveur, déconnecter, appeler d'autres fonctions, récupérer la liste des utilisateurs ... mais tout ce qui touche à l'appel de fonctions flash depuis red5 reste sans effet.

  2. #2
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Par défaut Solution
    Je vais donner la solution tant qu'à faire :

    1.

    this.nc.client = {
    onBWDone: function():void { }
    };
    doit contenir toutes les fonctions qui doivent être appelées depuis java.

    Ainsi, si depuis java, on invoke JoinUser() tel que

    serviceUtils.invokeOnAllConnections ("joinuser", new Object[] {"ok"} )

    côté flash, nous obtiendrons

    this.nc.client = {
    onBWDone: function():void { },
    joinuser = this.Joinuser
    };
    où this.Joinuser correspond à notre fonction flash.

    A noter : la forme correct côté java est celle-ci :

    serviceUtils.invokeOnAllConnections ("joinuser", new Object[] {"ok",...} );
    et non :

    serviceUtils.invokeOnAllConnections (scope, "joinuser", new Object[] {"ok",...} );
    2. Dans le cas, où les appels depuis java ne semble toujours pas fonctionner, le problème vient des itérations liées au scope.getConnections()

    tel que

    Collection<Set<IConnection>> myCollection = scope.getConnections();
    for(Set<IConnection> conns: myCollection){
    qui fonctionneront uniquement si le tableau des utilisateurs est bien renseigné :

    Personnellement, lorsque je sauvegardais mon user via ma fonction java connect() tel que :

    users.put(id, new User(id,pseudo,role,sex,room, photo));
    j'omettais (volontairement) de renseigner un champs (ici room), ce qui empêchait la boucle précédente de s'effectuer...

    public class User {

    public String id = null;
    public String pseudo = null;
    public String role = null;
    public String sex = null;
    public String onlineStatus = "1";
    public String room = null;
    public String photo = null;

    public User (String id,String pseudo, String role, String sex, String room, String photo) {
    this.id = id;
    this.pseudo = pseudo;
    this.role = role;
    this.sex = sex;
    this.onlineStatus = "1";
    this.photo = photo;
    //this.room = room;
    }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [forms 6i]execute_query sans effet
    Par pjcejbpojo dans le forum Forms
    Réponses: 11
    Dernier message: 28/04/2006, 17h08
  2. [AJAX] Fontion JS sans effet
    Par LoK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2006, 14h43
  3. Combo sans effet
    Par GBW067 dans le forum Sécurité
    Réponses: 5
    Dernier message: 29/01/2006, 07h48
  4. Requête UPDATE sans effet
    Par Death83 dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/01/2006, 01h23
  5. Sans effet: StringGrid1->Cells[1][1][2] = c ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo