SyncEvent FMS -> AS3 comment synchroniser un remote shared object

szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010 - 2 avril 2009 à 11:21
szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010 - 2 avril 2009 à 11:22
Bonjour, je suis en train de réaliser un site en AS3 lié à un serveur FMS,j'ai un shared object qui contient la liste de mes user connecté, les user sont créer avec "user_" suivi de l'id de la base de donnée. La synchronisation fonctionne de facon completement aléatoire....et je ne vois pas de quoi cela peut venir. Merci de votre aide

code coté FMS

main.asc
[as]
application.onConnect = function(clientObj, User){
    application.userManager.addUser(clientObj, User);
    trace("connexion de "+User.nom+" "+User.Id);
}/as

UserManager.asc
[as]UserManager.prototype.addUser = function(clientObj, user){
    
    if(this.users["user_" + user.Id] == undefined)
    {
        trace (this.users["user_" + user.Id]);
        application.acceptConnection(clientObj);
        
        this.userCount++;
        clientObj.nom=user.nom;
        clientObj.prenom=user.prenom;
        clientObj.Id=user.Id;
        clientObj.etat=user.etat;
        //set the shared object
        this.usersSO.setProperty("user"+ user.Id, user);
        //set the server object
        this.users["user_" + user.Id] = clientObj;
        return true;
    }
    else
    {
        trace ("client déja connecté");
        err=new Object();
        err.message="client déja connecté";
        application.rejectConnection(clientObj,err);
    }
}
/as

Code coté Client client.as(classe définie comme client du netConnection
[as]
var so:SharedObject= SharedObject.getRemote("listeUser",maConnexion.uri,false);
            so.connect(maConnexion);
            so.addEventListener(SyncEvent.SYNC, syncUser);
            
            
            function syncUser(e:SyncEvent):void
            {
                  for (var chng:uint; chng < e.changeList.length; chng++)
                  {
                      
                        trace("synchronisation de "+e.changeList[chng].code+" "+e.changeList[chng].name);
                        for each (var contact:Contact in Globals.vars.contact_array)
                        {
                            if( e.changeList[chng].name =="user"+contact.Id)
                                {
                                switch(e.changeList[chng].code)
                                {
                                    //si l'utilisateur se connecte
                                    case "change":
                                        Globals.vars.myListeUser.addUser(contact);
                                    break;
                                    
                                    //si l'utilisateur se deconnecte);
                                    case "delete":
                                        Globals.vars.myListeUser.delUser(contact);
                                    break;
                                }
                            }
                      }
                  }
/as
A voir également:

1 réponse

szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010
2 avril 2009 à 11:22
du nouveau, il semblerait que la synchronisation marche environ les 10 premieres fois puis plus rien
0
Rejoignez-nous