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]