2009-11-21 91 views
0

我试图将所有用户存储在服务器端创建的sharedObject中,因此所有用户都获得了所有在线用户的同步列表。red5服务器端共享对象

我认为我创建了共享对象的服务器端正确的,但我不能“找到”的共享对象的Flash应用程序。

在Java应用程序Red5的类中:

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; 
} 

闪存共享对象看起来是这样的:

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); 
} 

但_userSO似乎并没有找到共享对象的服务器上。

回答

0

我发现,你可以使用下面一行的执行AS3脚本,而不是存储共享对象中的数据:

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

这当然取决于你的情况,但在很多情况下的SO方法是比在每个连接上调用方法更高效。 – 2012-05-01 17:10:51