2009-11-21 5 views
0

J'essaie de stocker tous les utilisateurs dans un sharedObject qui est créé côté serveur, de sorte que tous les utilisateurs obtiennent une liste synchronisée de tous les utilisateurs en ligne.red5 côté serveur sharedObject

Je pense que je crée le sharedObject correct sur le côté serveur mais je ne peux pas "trouver" le sharedObject dans l'application flash.

l'intérieur de la classe Java Red5 Application:

ISharedObject userList; 

public boolean connect(IConnection conn, IScope scope, Object[] params) 
{  
    if(userList == null) 
    { 
     createSharedObject(scope, "userList", false); 
     userList = getSharedObject(scope, "userList"); 
    } 

    userList.setAttribute("user", "some name"); 

    return true; 
} 

Le flash SharedObject ressemble à ceci:

private var _userSO:SharedObject; 

private function initUserSO() // I call this function when I get a netConnection 
{ 
    _userSO = SharedObject.getRemote("userList", this.uri, false); 
    _userSO.addEventListener(SyncEvent.SYNC,syncUsers); 
    _userSO.connect(this); // this = netconnection 
} 

private function syncUsers(e:SyncEvent):void 
{ 
    MonsterDebugger.trace('userManager',_userSO.data); 
} 

Mais le _userSO ne semble pas trouver le SharedObject sur le serveur.

Répondre

0

Je trouve que vous pouvez utiliser la ligne ci-dessous pour exécuter le script AS3 au lieu de stocker les données dans un SharedObject:

ServiceUtils.invokeOnAllConnections(room, "my_as3_function", userList); 
+0

Il dépend bien sûr de votre situation, mais dans beaucoup de cas, l'approche SO est plus efficace que d'appeler une méthode sur chaque connexion. –