FMS2 SharedObject et call ciblé

cs_badben Messages postés 55 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 22 août 2007 - 20 oct. 2006 à 12:09
natiw Messages postés 1 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 20 juillet 2007 - 20 juil. 2007 à 14:14
Salut,

j'ai regardé des dixaines de fois les tut mais j'arrive mal à cerner certains points concernant le communications ciblés.

J'essaye de faire un récapitulatif de ce que j'ai comrpis.

Corrigez moi si je me trompe :

J'ai compris qu'un SO est un object synchronisé avec tous les utilisateurs connectés à ce même SO.

Il est initialisé sur le serveur comme ça :
this.SO = SharedObject.get("SO", false);


Le client une fois connecté se synchonise comme ça :

SO = SharedObject.getRemote("SO", nc.uri, false);
SO.onSync = function() {
     // Lorsque le SO est modifié sur le serveur cette fonction est lancée
}
SO.connect(NetConnection);


(je ne sais pas à quoi correspond les param false)

Donc lorsque le SO change de paramètre sur le serveur, par exemple :

this.SO.data.variable = "bonjour"
this.SO.setProperty("users", this.SO.variable);


Sur le client est appelé la fonction SO.onSync

Voilà ce que j'ai compris sur les SO.

J'ai essayé de faire un call ciblé sans utiliser les SO car je ne sais pas comment m'y prendre précisément on me dit de créer des objets, de faire des call ciblé, mais je n'arrive pas à voir comment il faut faire étant donén que je n'ai que des bouts de code.

Voilà mon appli :

J'ai simplifier le tout, il y a 2 boutons sur la 1ere frame un pour le joueur 1 avec l'id 1 et un pour joueur 2 avec l'id 2. J'ai fait cela pour simuler 2 joueurs différents qui se connectent. Uniquement pour le test.
Chaque joueur connait l'id de son adversaire.
Frame 1 :  (login)

stop();
function login1() {
    session = new Object();
    session.id = 1;
    session.idAdversaire = 2;
    gotoAndPlay(2);
}
function login2() {
    session = new Object();
    session.id = 2;
    session.idAdversaire = 1;
    gotoAndPlay(2);
}
j1.addEventListener("click", login1);
j2.addEventListener("click", login2);


Frame 2 : (connexion)

stop();
nc = new NetConnection();
nc.owner = this;
nc.connect("rtmp://192.168.0.100/test_multiusers", session.id, session.idAdversaire);
nc.onStatus = function(info) {
    trace(info.code);
    if (info.code == "NetConnection.Connect.Success") {
        trace("Connecté");
    } else {
        com = "Problème de connexion.";
    }
};
NetConnection.prototype.lancerJeu = function(idAdversaire) {
    trace("Votre adversaire "+idAdversaire+" est connecté et prêt à jouer");
    gotoAndPlay("jeu");
};
NetConnection.prototype.utilisateurDeconnecte = function(idAdversaire) {
    trace("Votre adversaire s'est déconnecté");
    gotoAndPlay("fin");
};


Maintenant sur le serveur :

application.onAppStart = function() {
    trace("Applicaiton lancée");
    this.tabJoueur = Array();
};
application.onConnect = function(client, id, idAdversaire) {
    trace(client);
    client.id = id;
    client.idAdversaire = idAdversaire;
    this.acceptConnection(client);
    this.tabJoueur.push(id);
    trace("Client se connecte avec l'id : "+client.id+" et cherche l'adversaire : "+client.idAdversaire);
    for (idJoueur in this.tabJoueur) {
        if (idJoueur == client.idAdversaire) {
            trace("Adversaire trouvé");
                        // je lance la fonction lacerJeu sur les 2 joueurs.
            client[id].call("lancerJeu", null, idAdversaire);
            client[idAdversaire].call("lancerJeu", null, id);
        }
    }
};
application.onDisconnect = function(client) {
    trace("Client déconnecté.");
    client[client.idAdversaire].call("utilisateurDeconnecte", client.id);
    // On supprimer le client du tableau
    this.tabJoueurTemp = new Array();
    for (idJoueur in this.tabJoueur) {
        if (idJoueur != client.id) {
            this.tabJoueurTemp.push(idJoueur);
        }
    }
    this.tabJoueur = this.tabJoueurTemps
    trace("Tabbleau des connectés : "+this.tabJoueur);
};

Voilà, avec ce code FMS2 me retourne une erreur concernant le client[id], en fait je ne sais pas trop bien manier les objets, je ne connais pas très bien la syntaxe.

Merci par avance.

5 réponses

scara 51 Messages postés 94 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 18 septembre 2007
21 oct. 2006 à 03:46
Heu, dis-moi si je me trompe, tu veux faire communiquer 2 ordinateurs via sharedObject ?  
On me l'avais jms faite celle-la. sharedObject en mode télépathie
0
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
24 oct. 2006 à 12:19
scara51 renseigne toi un peut avant de poster inutilement :

le titre du post c'est FMS2 SharedObject et call ciblé et fms2 ca veut dire flash media server, et tu sais quoi ?
Dans flashmedia server il y'a des shared object qui permettent de faire communiquer plusieurs applications, qui se trouvent sur le serveur.
La phrase "Il est initialisé sur le serveur comme ça :" aurait du te mettre sur la piste...
Il faut croire que tu est plus preocupé par la prochaine vanne que tu va sortir que par le probleme de celui qui poste.....

Pour toi [auteurdetail.aspx?ID=244570 badben]désolé mais j'utilise des serveurs socket pour la com flash....

A tchao !

www.opsas.net
0
scara 51 Messages postés 94 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 18 septembre 2007
25 oct. 2006 à 03:01
Merci de me corriger Prouprou_Sensei.
0
cs_badben Messages postés 55 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 22 août 2007
25 oct. 2006 à 21:17
Je voulais te répondre scara 51 mais j'ai eu un petit problème avant l'envoi du post.

Donc si je me souvient je disais que j'ai mis en titre FMS2 pour "filtrer" les visiteurs, si à la base on ne sais pas ce que c'est que FMS2 ce n'est même pas la peine de répondre. En l'occurence tu es passé a travers les mailles du filet et tu as répondu une vanne à 2 balles...

Enfin bref je me suis demmerdé tout seul et je sais manier FMS2.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
natiw Messages postés 1 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 20 juillet 2007
20 juil. 2007 à 14:14
Bonjour,

Nous sommes a la recherche d'un expert en serveurs FMS2
ayant un peu de temps pour offrir un support pointu concernant le
réglage, la sécurité de FMS2 et des applications hébergées pour un de
nos clients sur Genève.

Nous sommes accesibles à l'adresse suivante :
NATIW
Rue Synagogue 40
1204 Geneve
tel +41 22 328 07 70

info@natiw.ch
www.natiw.ch.

Merci de nous indiquer s'il y a dans votre équipe une personne pouvant assurer ce mandat.

Haim Echanove, Julia Polo
0
Rejoignez-nous